linux shell命令find详细解释
find 命令的一般形式为:
find pathname -options [-print -exec -ok]
参数说明:
- pathname: find命令所查找的目录路径。例如用"."来表示当前目录,用"/"来表示系统根目录
- -print: find命令将匹配的文件输出到标准输出。
- -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{ }和\;之间的空格。
- -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数 所给出的shell命令,在执行每一个命令之前,都会给出提示,让用 户来确定是否执行。
举例
find . -type f -exec ls -l {} \;
查找当前目录下普通文件格式的文件,显示出来
- b - 块设备文件。
- d - 目录。
- c - 字符设备文件。
- p - 管道文件。
- l - 符号链接文件。
- f - 普通文件。
find logs -type f -mtime +5 -exec rm {} \;
在 /logs 目录中查找更改时间在5日以前的文件并删除它们
find . -name "*.conf" -mtime +5 -ok rm {} \;
find命令在当前目录中查找所有文件名以 .conf 结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
find /etc -name "passwd*" -exec grep "sam" {} \;
find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
find . -name "aa.sh" -exec cp {} bb.sh \;
把当前目录下的aa.sh的文件复制为bb.sh文件,注意“{}”的位置!!!
find . -name "[A-Z]*" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件(-print可以略)
find . -name "[a-z][a-z][0--9][0--9].txt" -print
在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是*.txt的文件
find . -perm 755 -print
在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件
find /etc -user uucp -print
在/ e t c目录下查找文件属主为u u c p的文件
find / -name "file*" -print | xargs echo "" > /temp/core.log
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中
find . -perm -7 -print | xargs chmod o-w
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限