find 命令是 Linux/Unix 系统中非常常用的一种命令,用于在指定目录及其子目录中查找文件并进行相应的操作。下面是 find 命令的详细介绍:
基本语法
cssCopy code
find [path] [expression]
其中,path 表示要查找的目录或文件,可以是相对路径或绝对路径;expression 表示查找的条件,例如按名称查找、按类型查找、按大小查找等等。
常用参数
-name pattern:按名称查找文件,pattern 表示文件名的模式,支持通配符,例如 *.txt。
-type type:按类型查找文件,type 表示文件类型,例如 f 表示普通文件,d 表示目录。
-size size:按文件大小查找文件,size 表示文件大小,支持多种单位,例如 10M 表示 10MB,+10M 表示大于 10MB。
-mtime days:按修改时间查找文件,days 表示天数,-n 表示修改时间在 n 天以内,+n 表示修改时间在 n 天以前。
-exec command {} \;:执行命令,{} 表示查找到的文件名,\; 表示命令结束。
示例
1.查找当前目录下所有的文件和目录:
find .
2.查找当前目录下所有的文件,但不包括子目录:
find . -maxdepth 1 -type f
3.查找 /usr/local 目录下所有的 .txt 文件:
find /usr/local -name "*.txt"
4.查找 /usr/local 目录下所有的 .txt 文件,但不包括子目录:
find /usr/local -maxdepth 1 -name "*.txt"
5.查找 /usr/local 目录下所有的 .txt 文件,并且文件大小大于 10MB:
find /usr/local -name "*.txt" -size +10M
6.查找 /usr/local 目录下所有修改时间在 7 天以内的 .txt 文件:
find /usr/local -name "*.txt" -mtime -7
7.查找 /usr/local 目录下所有 .txt 文件,并将它们删除:
find /usr/local -name "*.txt" -exec rm {} \;
注意事项
·find 命令默认会查找指定目录及其子目录中的所有文件和目录,如果不想查找子目录,可以使用 -maxdepth 参数。
·find 命令查找到的文件名是相对路径或绝对路径,如果想要在执行命令时使用相对路径,需要将 {} 替换为 ./{}。
·-exec