公司的文件服务器之前是windows系统加上SafeShare组建的,后来觉得使用较慢,换centos7+nextcloud,所以原来的数据产生了大量带~~~@*的文件,以及AutoCAD自动产生的dwl文件。所以我想在linux下一次性删除这些恼人的文件。

   在网上找了一下,还真有类似的需求,直接给出命令啦:

# find . -name '~~~@*' -type f -print -exec rm -rf {} \;
# find . -name '*.dwl' -type f -print -exec rm -rf {} \;
# find . -name '*.bak' -type f -print -exec rm -rf {} \;
# find . -name '*.lsp' -type f -print -exec rm -rf {} \;
# find . -name '*.dwl2' -type f -print -exec rm -rf {} \;
# find . -type f -size +800M

(1) “.” 表示从当前目录开始递归查找

(2) “ -name ‘*.bak’ “根据名称来查找,要查找所有以.bak结尾的文件夹或者文件

(3) “ -type f “查找的类型为文件

(4) “-print” 输出查找的文件目录名

(5) 最主要的是是-exec了,-exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。

​ exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号;


还有更好的方法,就是配合xargs的-i参数,使得{}代表find查找到的文件,并将这些文件作为参数放在mv命令后面作为要移动的源文件,移动(删除)到dir2目录下。

# find . -name "*.bak"|xargs -i mv {} dir2