Linux shell 查找操作

find 命令

有时可能需要在系统中查找具有某一特征的文件,find 是一个非常有效的工具。

find pathname -options [-print -exec -ok]

让我们来看看该命令的参数:

pathname find 命令所查找的目录路径。例如用 . 来表示当前目录,用 / 来表示系统根目录。

-print find 命令将匹配的文件输出到标准输出。

-exec find 命令对匹配的文件执行该参数所给出的 shell 命令。相应命令的形式为 'command' {} / ; ,注意 { } / ;之间的空格。

-ok -exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

 

-name :按文件名查找

find /root –name “[a-z][a-z][0-9][0-9].txt” –print

 

-perm :按文件权限查找

find /root –perm 755 –print

find /root –name “*.txt” –perm 755 –print

 

-prune :忽略某个目录

????

-user -nouser 选项:按属主查找,按被删除属主查找

find /etc –user uucp –print

find /home –nouser –print

 

-mtime :按更改时间查找

find / -mtime -5 –print                /* 更改时间少于 5 天的 */

find /var/adm –mtime +3 –print     /* 更改时间多于 3 天的 */

 

-newer :查找更改时间在两个文件之间的文件

find /etc –newer age.awk !-newer belts.awk –exec ls –l {} /

/* 查找比 age.awk 新但比 belts.awk 旧的文件。 */

find . –newer dstamp –print

 

-type :按类型查找

find /etc –type d –print

 

-size :按文件大小查找

Find . –size +1000c –print      /* 大于 1000 个字节 */

Find . –size 1000c –print       /* 等于 1000 个字节 */

Find . –size -10 –print         /* 小于 10 个块(一块等于 512 字节) */

 

-depth: 深层查找,现在文件中查找,再在子目录中查找。

find / -name “CON.FILE” –depth –print

 

-mount :在当前文件系统中查找,不进入其他文件系统。

find . –name “*.c” –mount –print

 

使用 exec ok 来执行 shell 命令

含义: -exec ,一旦 find 命令匹配到相应的文件,就可以用 -exec 选项中的命令对其进行操作, exec 选项后面跟所要执行的命令,然后是一对 {} ,一个空格和一个 /, 最后是一个分号。

find ./hello –name “eee” –exec cat {} /;

find . –name “*.LOG” –mtime +5 –ok rm {} /;

 

 

 

xargs:

    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 这个词

 

你可能感兴趣的:(Linux,Shell)