如何使用 rm 命令删除 linux 中的所有空文件,而不考虑它们的目录
How delete all the empty files in linux irrespective of their directory using rm command
我的 Linux 文件系统的各个子目录中有很多空文件。如何使用 rm
命令只删除空文件?
我厌倦了通过转到所有目录并找到要手动删除的空文件来删除,所以我找到了像 find -size 0 -type f | rm -f
这样的命令组合。但是我需要删除所有目录中的所有空文件,是否可以仅使用一个 rm
命令?
我认为 rm
不允许根据大小选择文件。但是,如果只想使用一个命令,可以使用 find
find /path/to/dir -type f -empty -delete
-type f
是必需的,因为目录也被标记为大小为零。 -delete
最后应该走了。
但是您可能想要删除所有文件而不考虑它们的目录,不建议这样做,因为有许多系统文件和一些符号链接也可能在此过程中被删除。
好吧,rm(1)
命令 只会删除您在命令行 上传递给它的名称的文件。 rm(1)
中没有代码允许您根据某些条件或条件过滤这些文件。旧的 UNIX 哲学在这里要求,编写简单的工具并将它们耦合到管道上,以构建复杂的命令。在这种情况下,find(1)
就是答案……这是一种工具,可以根据相当任意的标准(比如您要求的标准)生成 select 文件,并生成实际文件名或简单地调用基于命令的命令在那上面。在这方面
find dir1 dir2 ... -type f -size 0 -print | xargs rm
将是您问题的解决方案(使用 xargs(1)
命令对文件名进行批处理,以减少 fork(2)
和 exec(2)
调用,减少进程分叉开销),允许指定多个目录, select 仅处理大小为 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)
。
我的 Linux 文件系统的各个子目录中有很多空文件。如何使用 rm
命令只删除空文件?
我厌倦了通过转到所有目录并找到要手动删除的空文件来删除,所以我找到了像 find -size 0 -type f | rm -f
这样的命令组合。但是我需要删除所有目录中的所有空文件,是否可以仅使用一个 rm
命令?
我认为 rm
不允许根据大小选择文件。但是,如果只想使用一个命令,可以使用 find
find /path/to/dir -type f -empty -delete
-type f
是必需的,因为目录也被标记为大小为零。 -delete
最后应该走了。
但是您可能想要删除所有文件而不考虑它们的目录,不建议这样做,因为有许多系统文件和一些符号链接也可能在此过程中被删除。
好吧,rm(1)
命令 只会删除您在命令行 上传递给它的名称的文件。 rm(1)
中没有代码允许您根据某些条件或条件过滤这些文件。旧的 UNIX 哲学在这里要求,编写简单的工具并将它们耦合到管道上,以构建复杂的命令。在这种情况下,find(1)
就是答案……这是一种工具,可以根据相当任意的标准(比如您要求的标准)生成 select 文件,并生成实际文件名或简单地调用基于命令的命令在那上面。在这方面
find dir1 dir2 ... -type f -size 0 -print | xargs rm
将是您问题的解决方案(使用 xargs(1)
命令对文件名进行批处理,以减少 fork(2)
和 exec(2)
调用,减少进程分叉开销),允许指定多个目录, select 仅处理大小为 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)
。