有时可能需要在系统中查找具有某一特征的文件,find 是一个非常有效的工具。
find pathname -options [-print -exec -ok]
让我们来看看该命令的参数:
pathname find 命令所查找的目录路径。例如用 . 来表示当前目录,用 / 来表示系统根目录。
-print find 命令将匹配的文件输出到标准输出。
-exec find 命令对匹配的文件执行该参数所给出的 shell 命令。相应命令的形式为 'command' {} / ; ,注意 { } 和 / ;之间的空格。
-ok 和 -exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find /root –name “[a-z][a-z][0-9][0-9].txt” –print
find /root –perm 755 –print
find /root –name “*.txt” –perm 755 –print
????
find /etc –user uucp –print
find /home –nouser –print
find / -mtime -5 –print /* 更改时间少于 5 天的 */
find /var/adm –mtime +3 –print /* 更改时间多于 3 天的 */
find /etc –newer age.awk !-newer belts.awk –exec ls –l {} /
/* 查找比 age.awk 新但比 belts.awk 旧的文件。 */
find . –newer dstamp –print
find /etc –type d –print
Find . –size +1000c –print /* 大于 1000 个字节 */
Find . –size 1000c –print /* 等于 1000 个字节 */
Find . –size -10 –print /* 小于 10 个块(一块等于 512 字节) */
find / -name “CON.FILE” –depth –print
find . –name “*.c” –mount –print
含义: -exec ,一旦 find 命令匹配到相应的文件,就可以用 -exec 选项中的命令对其进行操作, exec 选项后面跟所要执行的命令,然后是一对 {} ,一个空格和一个 /, 最后是一个分号。
find ./hello –name “eee” –exec cat {} /;
find . –name “*.LOG” –mtime +5 –ok rm {} /;
why xargs ? : 在使用find 命令的-exec 选项处理匹配到的文件时,find 命令将所有匹配到的文件一起传递给exec 执行。有些系统对能够传递给exec 的命令长度有限制,这样find 命令运行会出现溢出错误。
find /apps/audit –perm -7 –print | xargs chmod o-w
// 在 /apps/audit 目录下查找所有用户具有读写执行权限的文件,并回收相应的写权限。
find / -type f –print | xargs grep “device”
// 用 grep 命令在所有普通文件中搜索 device 这个词
find . –name */ -type f –print | xargs grep “DBO”
// 用 grep 命令在当前目录下的所有普通文件中搜索 DBO 这个词