由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( N F
S ),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指3 0
G字节以上的文件系统)。
Find命令的一般形式为:
find pathname -options [-print -exec -ok]
先了解一下find所带的参数,能实现哪些功能
find命令选项
-name:按照文件名查找文件。
-perm:按照文件权限来查找文件。
-prune:使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user: 按照文件属主来查找文件。
-group:按照文件所属的组来查找文件。
-mtime -n +n:按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+
n表示文件更改时间距现在n天以前。find命令还有- a t i m e和- c t i m e选项,但它们都和-
mtime选项。
-nogroup:查找无有效所属组的文件,即该文件所属的组在/etc/g r o u p s中不存在。
-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2:查找更改时间比文件f i l e 1新但比文件f i l e 2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统m o u n t点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用c p i o命令,将这些文件备份到磁带设备中。
下面这个选项我觉得这个很好用,说明下:
使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
(在有些操作系统中只允许- e x e c选项执行诸如l s或ls
-l这样的命令)。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行r m命令删除文件之前,最好先用l
s命令看一下,确认它们是所要删除的文件。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。
为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的- e x e c选项中
# find . -type f -exec ls -l {} \;
-rw-r--r--
1
root
root
34928 2003-02-25
./conf/httpd.conf
-rw-r--r--
1
root
root
12959 2003-02-25
./conf/magic
-rw-r--r--
1
root
root
180 2003-02-25
./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm {} \;
记住,在s h e l l中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如m v或r m命令时,可以使用- e
x e c选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以.
LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.conf"
-mtime +5 -ok rm {}
\;
< rm ... ./conf/httpd.conf > ?
n
按y键删除文件,按n键不删除。
任何形式的命令都可以在- exec选项中使用。
在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“
passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执
行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name "passwd*" -exec grep "sam" {} \;
sam:x:501:501::/usr/sam:/bin/bash
find命令的例子
1.查找当前用户主目录下的所有文件,下面两种方法都可以使用:
$ find $HOME -print
$ find ~ -print
2.为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件,可以用:
$ find . -type f -perm 644 -exec ls -l {}
\;
3.为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径,可以用:
$ find / -type f -size 0 -exec ls -l {} \;
4.查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm {}
\;
5.为了查找系统中所有属于root组的文件,可以用:
$find . -group root -exec ls
-l {} \;
-rw-r--r--
1
root
root
595 10月 31 01:09 ./fie1
6.下面的find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。该命令只检查三位数字,所以相应文件的后缀不要超过999。
先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name
"admin.log[0-9][0-9][0-9]" -atime -7
-ok rm {}
\;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n
7.为了查找当前文件系统中的所有目录并排序,可以用:
$ find .
-type d
|sort
8.为了查找系统中所有的r m t磁带设备,可以用:
$ find
/dev/rmt -print
9.为了查找当前文件系统中的所有目录并排序,可以用:
$ find .
-type d |sort
分享到:
相关推荐
在本篇文章中,我们将从基础知识开始,深入浅出地介绍 Find 命令的使用方法和高级技巧。 一、通用查找 Find 命令的基本语法是 `find [搜索路径] [搜索条件] [搜索动作]`。其中,搜索路径可以是当前目录(.`),也...
在Linux系统管理中,Shell脚本是自动化任务的基石,而`sed`、`awk`、...而`Unix-Find.pdf`则可能会深入讨论`find`命令的使用方法和案例。通过学习这些文档,你将能够更熟练地运用这些工具,提升Linux环境下的工作效率。
find的日常用法举例 find的日常用法帮助 如何批量改名 bc指令的基本用法 检查服务器的连接状况的shell find 和 exec xargs 保证shell脚本执行唯一性 用一条命令处理分别改变文件和文件夹的权限 unix时间戳与系统时间...
这些工具的使用方法通常会在文档中详细说明,包括命令语法、参数以及常见用例。 总的来说,EFI Shell常用工具是一个强大的工具集,对于系统管理员、开发者以及需要在UEFI环境中进行低级别操作的用户来说,它是不可...
以下我们将深入探讨如何利用shell find命令删除过期的缓存方法。 首先,了解find命令的基本语法。`find`命令通常用于在指定的目录下查找满足特定条件的文件。基本格式如下: ```bash find [path] [expression] ...
3. **高级命令应用**:包括文件查找(`find`)、批量重命名(`ren`)、压缩和解压缩文件(`zip`和`unzip`)等高级功能的使用方法。 4. **脚本编写**:如何创建和运行批处理脚本,以及如何在脚本中使用条件语句和...
在获取当前目录时,shell 脚本使用 PATH=`pwd`,而 Makefile 中没有这种方法。 此外,shell 中 = 变量不允许有空格,而 Makefile 中 = 两边允许有空格。这两种语法的不同使得它们在不同的环境中使用。 在 Makefile...
02_Shell-使用find和xargs.PDF 03_Shell-后台执行命令.PDF 04_Shell-文件名置换.PDF 05_Shell-shell输入与输出.PDF 06_Shell-命令执行顺序.PDF 07_文本过滤-正则表达式介绍.PDF 08_文本过滤-grep 家族.PDF 09...
而在Shell编写中,我们所说的"shell脚本"(Shell script)是一种使用Shell语言编写的程序,用于自动化一系列的系统任务。在Linux或Unix环境中,Bash Shell是最常用的一种Shell,因此我们通常所说的Shell编写指的是...
第2章 使用find和xargs 14 第3章 后台执行命令 22 第4章 文件名置换 31 第5章 shell输入与输出 34 第6章 命令执行顺序 46 第二部分 文本过滤 第7章 正则表达式介绍 49 第8章 grep家族 56 第9章 AWK介绍 66 第10章 ...
一、基础用法 find /home/$USER 会列出用户主目录下的所有文件和目录 find /home/$USER -print print选项是打印的意思,默认换行打印 find /home/$USER -print0 使用print0会将换行符改为空字符进行输出 二、其他...
第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一...
《Unix Shell by Example》这本书是Unix/Linux系统用户和管理员的重要参考资料,它深入浅出地介绍了Unix Shell的使用方法。Shell是Unix系统中的命令解释器,是用户与操作系统交互的桥梁,通过Shell脚本,我们可以...
`find`命令是Linux和Unix系统中用于在指定目录下搜索...总之,`find`命令是Linux系统中不可或缺的工具,掌握其用法能够极大地提高文件管理和维护的效率。通过灵活运用各种选项和操作,你可以轻松地定位和处理大量文件。
Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...
第02 章使用find 和xargs.PDF 第03 章后台执行命令.PDF 第04 章文件名置换.PDF 第05 章shell 输入与输出.PDF 第06 章命令执行顺序.PDF 第07 章正则表达式介绍.PDF 第08 章grep 家族.PDF 第09 章AWK 介绍.PDF 第10 章...
这部分内容可能包括各种系统管理相关的实用工具,如find、du、tar、rsync等,以及如何在Shell脚本中调用这些工具来自动化日常任务,如文件查找、磁盘空间监控、备份策略等。 七、游戏娱乐: 尽管Shell主要用于工作...
第一部分介绍了Shell基础知识,其中涵盖了文件安全与权限、使用find和xargs命令、后台执行命令、文件名置换、Shell输入输出以及命令执行顺序等概念。 在文件安全与权限这一章节中,我们学习到了Linux下文件的概念、...
### Shell基础学习资料知识点详解 #### 一、Shell脚本的执行与权限设置 - **脚本执行前的声明**:任何Shell脚本都需在第一行...这对于初学者来说是非常宝贵的资源,有助于快速掌握Shell脚本的基本用法和技术细节。
第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍...