参考答案:
find 是一个非常强大的命令,用于在指定目录中查找符合条件的文件和目录。它支持多种选项和表达式,可以根据文件名、修改时间、权限等属性来查找文件。
1find <路径> <查找条件> <执行动作>
<路径>:指定要搜索的目录路径(可以是相对路径或绝对路径),如果路径为空或省略,默认为当前目录(.)。<查找条件>:用于过滤符合特定条件的文件或目录。<执行动作>:对查找到的文件或目录执行的操作(比如打印、删除、修改权限等)。最基本的查找条件是文件名,使用 -name 或 -iname(忽略大小写)来查找特定文件。
查找当前目录及子目录下名为 file.txt 的文件:
1find . -name "file.txt"
查找所有扩展名为 .log 的文件(忽略大小写):
1find . -iname "*.log"
使用 -type 来限制查找的类型,可以是文件、目录、符号链接等。
查找当前目录及子目录中的所有文件:
1find . -type f
查找当前目录及子目录中的所有目录:
1find . -type d
查找当前目录及子目录中的所有符号链接:
1find . -type l
可以使用 -size 选项按文件的大小进行查找。
查找当前目录及子目录中大小为 1MB 的文件:
1find . -size 1M
查找当前目录及子目录中大于 100MB 的文件:
1find . -size +100M
查找当前目录及子目录中小于 10KB 的文件:
1find . -size -10k
-mtime、-atime 和 -ctime 分别用于按文件的修改时间、访问时间和更改时间来查找文件。
查找当前目录及子目录中 7 天内修改过的文件:
1find . -mtime -7
查找当前目录及子目录中 7 天前修改过的文件:
1find . -mtime +7
查找当前目录及子目录中 30 天内访问过的文件:
1find . -atime -30
可以使用 -exec 选项来对查找到的文件执行操作。例如,删除查找到的文件、修改权限等。
查找并删除所有 .log 文件:
1find . -name "*.log" -exec rm -f {} \;
解释:
-exec 后跟执行的命令,{} 表示当前找到的文件,\; 用来结束命令。查找并将所有 .txt 文件的权限更改为 755:
1find . -name "*.txt" -exec chmod 755 {} \;
查找并显示所有 .txt 文件的详细信息:
1find . -name "*.txt" -exec ls -l {} \;
可以使用 -perm 来查找具有特定权限的文件。
查找当前目录及子目录中权限为 755 的文件:
1find . -perm 755
查找当前目录及子目录中具有 x 执行权限的文件:
1find . -perm /111
解释:/111 表示文件具有任意的执行权限(用户、组或其他的执行权限)。
可以通过组合多个条件来查找文件,条件之间使用 -and 或 -or 连接。
查找当前目录中名为 file.txt 且大小大于 1MB 的文件:
1find . -name "file.txt" -and -size +1M
查找当前目录中名为 file.txt 或 file.log 的文件:
1find . \( -name "file.txt" -or -name "file.log" \)
解释:\( \) 用于将多个条件组合在一起。
使用 -empty 来查找空文件或空目录。
查找当前目录及子目录中所有空文件:
1find . -type f -empty
查找当前目录及子目录中所有空目录:
1find . -type d -empty
使用 -maxdepth 限制查找的最大目录深度。
查找当前目录下(不进入子目录)所有的 .txt 文件:
1find . -maxdepth 1 -name "*.txt"
查找当前目录及子目录中的 .txt 文件,但最大只查找 2 层子目录:
1find . -maxdepth 2 -name "*.txt"
使用 -path 和 -prune 来排除特定的目录或文件。
.txt 文件,但排除 /tmp 目录:
1find . -path "./tmp" -prune -o -name "*.txt" -print
最近更新时间:2024-12-24