关于 find 命令的一些用法
find [PATH] [OPTION] [ACTION]
查找文件
与文件权限及名称有关的参数
-name filename : filename 为需要查找的文件名,支持使用通配符
-size [+-]SIZE : 查找比 SIZE 还有大(+)或小(-)的文件,需要制定单位
-type TYPE : 查找指定 TYPE 文件类型的文件
-perm [+-]MODE : 查找匹配文件权限的文件
$find /etc -name passwd
$find ~/ -name '*.vim'
$find ~/ -size +50k
$find /app/jetty/server/ -type d -name '*log*'
$find /app/jetty/server/ -perm +7000
与时间有关的参数
-mtime n n 天之前的“一天之内”被更改过的文件名
-mtime +n 查找 n 天之前(不含n本身)被更改过的文件名
-mtime -n 查找 n 天之内(含n本身)被更改过的文件名
-newer file : file 为一个存在的文件,查找比 file 还要新的文件名
$find /etc -mtime 4
$find /etc -mtime +4
$find /etc -mtime -4
与用户或者用户组有关的参数
-user name : name 为用户账户名称
-group name : name 为用户组名称
-uid n : n 为数字,记录在 /etc/passwd 里面与用户名称对应的数字
-gid n : n 为数字,记录在 /etc/passwd 里面与用户组名称对应的数字
-nouser : 查找所有者不存在 /etc/passwd 的文件
-nogroup : 查找所有者的用户组不存在 /etc/passwd 的文件
$find /home/mysql -user root
$find /home/mysql -group root
$find ~/ -name '*.vim'
$find ~/ -nouser
其他选项
-exec command : command 为其他 linux 命令,处理查找到的结果。
-print : 将结果打印到屏幕上,这个是默认操作。
$find /home/mysql -user root
$find /home/mysql -group root
$find ~/ -name '*.vim'
$find ~/ -nouser
删除 Linux 下乱码文件
删除文件
每个文件都有一个节点编号,利用此节点编号定位乱码的文件,首先查看乱码文件的节点号。
$ls -i
22413314 12 ?..??mp3
前面的就是节点号了,接下来使用find命令查询并且删除。
$find -inum 22413314 -delete
-inum指根据节点号查询;-delete顾名思义就是删除操作了。这样就成功删除乱码文件了。值得注意的是,此方法只适用于删除文件或空的文件夹。
删除文件夹
对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现,首先相同的是查看乱码文件夹的节点号。
$ls -i
18612483 瑗块.?.. - Thank you, Love(128kbps) 2011.06.22
接下来使用find命令删除
$find -inum 18612483 -exec rm -rf {} \;
$find: ./瑗块.?.. - Thank you, Love(128kbps) 2011.06.22: No such file or directory
虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+;是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。
批量删除文件
$for n in 22413315 22413314;do find -inum $n -delete;done
批量删除文件夹
$for n in 22413315 22413314;do find -inum $n -exec rm -rf {} \;;done
$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它操作。
locate 命令
从数据库/var/lib/mlocate数据库查找数据。
更新的配置:/etc/updatedb.conf
手动更新数据库:updatedb
网友评论