我正在使用“查找”命令从位于执行命令的目录中的所有子文件夹中删除给定扩展名的一些无用填充。
find -type f -name *.txt -delete
find -type f -name *.xml -delete
find -type f -name *.pdbqt -delete
find -type f -name *.txt -delete
是否可以将这 4 个命令组合成一个命令以通过 1 个命令删除 4 种类型的填充?是否可以使用 find 来删除所有不属于 *.dlg 扩展的填充?
未引用
*.txt
是不好的。使用通配符时, Seefind
实用程序不会输出所有文件。是的。请参阅将多个
find
命令合并为一个。(这使用了 3 个模式,因为您的第 4 个命令复制了第一个命令,并且两次使用相同的模式没有意义。)
是的(我假设您想要常规文件,而不是所有文件):
如果上面的命令打印了你真的想删除的文件,那么在删除的情况下运行它
#
。测试
! -name '*.dlg'
被否定-name '*.dlg'
。当且仅当-name '*.dlg'
失败时它才会成功。您
-delete
在问题中使用过,因此您find
显然支持它。功能较弱的用户find
请参阅find
:-exec rm {} \;
vs-delete
. - 为什么前者被广泛推荐?请注意,在您的情况下,裸
find
作品如find .
. 我find .
明确使用是因为某些实现find
在命令行中至少需要一个路径。