手记

Linxu中find命令的使用

有时可能需要在系统中查找具有某一特征的文件 (例如文件权限、文件属主、文件长度、文件类型等等 ),find命令很有效。


find pathname -options [-print -exec -ok]
-print   find命令将匹配的文件输出到标准输出。
-exec    find命令对匹配的文件执行该参数所给出的 s h e l l命令。相应命令的形式为 'command' {} \;,注意{ }和\;之间的空格。
-ok     和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-name    按照文件名查找文件。
-perm    按照文件权限来查找文件。
-prune   使用这一选项可以使 f i n d命令不在当前指定的目录中查找,如果同时使用了 -depth选项,那么-prune选项将被find命令忽略。
-user    按照文件属主来查找文件。
-group   按照文件所属的组来查找文件。
-mtime -n +n    按照文件的更改时间来查找文件,-n表示文件更改时间距现在 n天以内,+n表示文件更改时间距现在 n天以前.find命令还有-atime和-ctime选项,但它们都和-mtime选项相似

示例:

  • 使用name选项:

    find ~ -name "*.txt" -print
    find . -name "*.txt" -print
    find . -name "[A-Z]*" -print
    find /etc -name "host*" -print
    find ~ -name "*" -print
    find . -print
    find . -name "[a-z][a-z][0-9][0-9].txt" -print
    • 使用perm选项
      find . -perm 755 -print
      find . -perm -007 -print
      find -perm mode
      find -perm -mode
      find -perm +mode
    • 忽略某个目录
      find /apps -name "/apps/bin" -prune -o -print
    • 使用user和nouser
      find ~ -user aaron -print
      find /etc -user root -print
      find /home -nouser -print
    • 使用group和nogroup选项
      find /apps -group accts -print
      find /apps -nogroup -print
    • 使用time
      find /home -mtime -5 -print
      find /home -mtime +3 -print
    • 比较文件新或旧
      newest_filename ! oldest_filename
      find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
    • type
      find /etc -type d -print
      find . ! -type d -print
    • size
      find . -size +1000000c -print
      find . -size 1000000c -print
      find . -size +100 -print
    • depth
      find /home -name "aaron.txt" -depth -print
    • mount:在当前文件系统中查找
      find . -name "test" -mount -print
    • exec/ok
      find . -type f -exec ls -l {} \;
      find logs -type f -mtime +5 -exec rm {} \;
      find . -name "*.LOG" -mtime +5 -ok rm {} \;
      find /etc -name "passwd*" -exec grep "rounder" {} \;
    • find的例子

    1、匹配home下的所有文件

    find /home -print
    find ~ -print

    2、综合举例

    find . -type f -perm 4755 -print
    find / -type f -size 0 -exec ls -l {} \;
    find /var/logs -type f -mtime +7 -exec rm {} \;
    find /logs -name 'admin.log[0-9][0-9][0-9]' -mtime +7 -exec rm {} \;
    find . -type d -print -local -mount | sort
    • xargs: -exec的改进版
      find /home -type f -print | xargs file
      find . -name "core" -print | xargs echo "" > /tmp/core.log
0人推荐
随时随地看视频
慕课网APP