一,命令介绍
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果没有写目录,则默认为当前目录下查找。
二,命令详解
基本语法
find [path] [expression]
path:指定搜索目录
expression:将要执行的文件
常用选项:
-name
:按照文件名搜索。- 例如:
find / -name "*.txt"
搜索根目录下所有扩展名为.txt
的文件。
- 例如:
-type
:指定文件类型。- 例如:
find / -type d
搜索所有目录。
- 例如:
-user
:按照文件所有者搜索。- 例如:
find / -user john
搜索用户john
拥有的所有文件。
- 例如:
-group
:按照文件所属组搜索。- 例如:
find / -group staff
搜索属于staff
组的所有文件。
- 例如:
-mtime
:按照文件内容上次修改时间搜索,单位为天。- 例如:
find / -mtime 7
搜索过去 7 天内修改过的文件。
- 例如:
-ctime
:按照文件状态信息上次修改时间搜索。-atime
:按照文件上次访问时间搜索。-size
:按照文件大小搜索,可以指定+n
(大于 n)、-n
(小于 n)、n
(等于 n),其中 n 以 1KB 为单位。- 例如:
find / -size +100M
搜索大于 100MB 的文件。
- 例如:
操作符:
-o
:逻辑或操作。- 例如:
find / -name "*.sh" -o -name "*.txt"
搜索所有扩展名为.sh
或.txt
的文件。
- 例如:
-not
或!
:逻辑非操作。- 例如:
find / ! -name "*.log"
搜索所有除了扩展名为.log
的文件。
- 例如:
动作:
-exec
:对找到的每个文件执行命令。- 例如:
find / -type f -exec ls -l {} \;
对每个找到的文件执行ls -l
命令。
- 例如:
-print
:打印找到的文件名(默认动作,通常不需要显式指定)。-delete
:删除找到的文件。
组合使用:
- 可以组合多个选项和操作符来定义复杂的搜索条件。
示例:
- 搜索当前目录及子目录下所有
.txt
文件:find . -name "*.txt"
- 搜索
/home
目录下所有用户john
的文件,并列出详细信息:find /home -user john -exec ls -l {} \;
- 搜索
/var
目录下过去 30 天内未被访问过的文件:find /var -atime +30