一、查找文件
1、查找指定文件名的文件
find / -name "file.txt"
上述代码表示在根目录下查找文件名为file.txt的文件,如果需要在其他目录下查找,则将/替换成目标目录。
2、通配符匹配查找文件
find /dirs -name "file.*"
上述代码表示在dirs目录下查找以file开头,后面跟着任意字符的文件。
3、查找文件大小在指定范围内的文件
find /dirs -size +10M -size -100M
上述代码表示在dirs目录下查找文件大小在10MB和100MB之间的文件。
4、按照时间查找文件
find / -ctime 7
上述代码表示在根目录下查找7天内更改的文件。
5、按照文件类型查找文件
find / -type f
上述代码表示在根目录下查找普通文件。
二、删除文件
1、删除指定文件
find / -name "file.txt" -exec rm -f {} \;
上述代码表示在根目录下查找名为file.txt的文件并删除。
2、删除匹配的文件
find / -name "*.txt" -delete
上述代码表示在根目录下查找文件名以.txt结尾的文件并逐一删除。
三、更改文件权限
1、更改所有者权限
find / -name "file.txt" -exec chown user:group {} \;
上述代码表示在根目录下查找名为file.txt的文件并将所有权转移给user:group。
2、更改文件权限
find / -name "file.txt" -exec chmod 755 {} \;
上述代码表示在根目录下查找名为file.txt的文件并更改其权限为755。
四、查找目录
1、查找指定目录名的目录
find / -type d -name "dir"
上述代码表示在根目录下查找名为dir的目录。
2、按照深度查找目录
find / -type d -name "dir" -depth 2
上述代码表示在根目录下查找名为dir的目录,深度为2。
3、查找空目录
find / -type d -empty
上述代码表示在根目录下查找空目录。
五、对找到的文件执行命令
1、对找到的文件执行命令
find / -name "*.txt" -exec grep "keyword" {} \;
上述代码表示在根目录下查找文件名以.txt结尾的文件并在其中搜索关键词keyword。
2、对找到的文件进行批量重命名
find /path -name "*.txt" -execdir mv {} newname.txt \;
上述代码表示在path目录下查找文件名以.txt结尾的文件并对它们进行批量重命名为newname.txt。
六、使用筛选器查找文件
1、使用OR逻辑来组合筛选器
find / -name "*.txt" \( -user user1 -o -user user2 \)
上述代码表示在根目录下查找属于用户user1或user2的所有.txt文件。
2、使用AND逻辑来组合筛选器
find / -name "*.txt" -user user1 -group group1
上述代码表示在根目录下查找属于用户user1且属于组group1的所有.txt文件。
3、使用NOT逻辑来排除某些文件
find / -name "*.txt" ! -user user1
上述代码表示在根目录下查找所有.txt文件,但将所有属于user1的文件排除在外。
七、使用find命令的注意事项
1、使用find命令时要注意权限问题,某些目录和文件可能需要管理员权限才能访问。
2、使用exec参数时要特别小心,防止误删重要文件。
3、使用find命令的搜索范围过大时,可能会耗费大量时间和系统资源。
4、使用通配符时要小心,不要匹配到不必要的文件。
5、建议使用-man参数了解更多命令使用帮助。