基本用法
find directory [expression]
:在指定的directory
中搜索文件和目录,根据[expression]
表达式来过滤结果。
常用选项
-name pattern:根据文件名模式搜索文件,pattern 可以是具体的文件名或者通配符模式。 -iname pattern:不区分大小写地根据文件名模式搜索文件。 -user username:搜索属于 username 用户的文件。 -group groupname:搜索属于 groupname 用户组的文件。 -size n[c]:搜索文件大小为 n 块(默认512字节)的文件。c 表示字节,k 表示千字节,M 表示兆字节,G 表示吉字节。 -mtime n:搜索文件内容上次修改时间距离现在 n 天之内的文件。 -atime n:搜索文件上次访问时间距离现在 n 天之内的文件。 -ctime n:搜索文件状态上次改变时间距离现在 n 天之内的文件。 -type d:只搜索目录。 -type f:只搜索文件。 -depth:在查找文件时,先在子目录中查找,然后再在当前目录中查找。 -maxdepth levels:设置查找的最大深度。 -mindepth levels:设置查找的最小深度。 -perm mode:搜索具有指定权限 mode 的文件。 -executable:搜索所有用户都有执行权限的文件。 -readable:搜索所有用户都可读的文件。 -writable:搜索所有用户都可写的文件。
动作
-exec command {} \;
:对搜索到的每个文件执行command
命令,{}
是一个占位符,代表当前找到的文件名。-ok command {} \;
:对搜索到的每个文件执行command
命令,但会在执行前询问用户是否确认。-print
:打印搜索到的文件名(默认动作)。-ls
:对搜索到的每个文件执行ls -d
命令。-delete
:删除搜索到的文件。
示例
find . -name "file.txt"
find /var/log -mtime -7
find . -user www
bashfind /home -size 0 -delete
find . -name "*.txt" -exec ls -lh {} \;
find . -name "*.jpg" -exec mv {} /home/www/pictures \;
注意事项
使用
-exec
选项时,需要小心,尤其是执行删除操作时,确保命令正确无误,以避免误删除文件。-exec
选项中的{}
占位符代表当前找到的文件名,\;
用于结束-exec
命令。find
命令非常灵活,可以通过组合不同的选项和动作来实现复杂的文件搜索和操作。