我的 Linux 文件系统的各个子目录中有很多空文件。如何使用rm
命令仅删除空文件?
我厌倦了通过转到所有目录并找到要手动删除的空文件来删除,所以我找到了像find -size 0 -type f | rm -f
. 但是我需要删除所有目录中的所有空文件,是否可以只使用一个rm
命令?
好吧,rm(1)
command只会删除您在命令行中传递给它的名称的文件。没有代码rm(1)
允许您根据某些条件或标准过滤这些文件。旧的 UNIX 哲学在这里要求编写简单的工具并将它们耦合到管道上,以便构建复杂的命令。在这种情况下,find(1)
答案是……这是一种根据相当任意的标准(如您要求的标准)选择文件并生成实际文件名或简单地根据该标准调用命令的工具。在这方面
find dir1 dir2 ... -type f -size 0 -print | xargs rm
将是解决办法(配料与文件名xargs(1)
的命令少做fork(2)
,并exec(2)
呼吁以较少的进程fork的开销),您的问题,允许指定几个迪尔斯,只选择文件大小为0,并将其传递到批处理命令xargs(1)
到整组全部删除。你甚至可以根据一些正则表达式过滤文件名
find dir1 dir2 ... -type f -size 0 -print | grep 'someRegularExpression' | xargs rm
并且您只会删除与正则表达式匹配的文件(以及您在 中表达的其他两个谓词find(1)
)您甚至可以获得已删除文件的列表
find dir1 dir2 ... -type f -size 0 -print | grep 'someRegularExpression' | tee erased.txt | xargs rm
见find(1)
,grep(1)
,tee(1)
,xargs(1)
和rm(1)
以供参考。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句