【问题标题】:How to remove all files that are empty in a directory?如何删除目录中的所有空文件?
【发布时间】:2017-05-13 08:25:33
【问题描述】:

假设我有一个如下所示的目录:

-rw-r--r-- 1 some-user wheel 0 file1
-rw-r--r-- 1 some-user wheel 257 file2
-rw-r--r-- 1 some-user wheel 0 file3
-rwxr-xr-x 1 some-user wheel 212 file4
-rw-r--r-- 1 some-user wheel 2012 file5
.... more files here.

如果相关,假设文件的名称比文件#更随机。

如何使用 rm 和 grep 或 sed 以某种形式仅删除目录中的空文件(意味着文件中包含 0 个字节)?

【问题讨论】:

标签: linux shell rm


【解决方案1】:

最简单的方法是使用-empty 测试和-delete 操作运行find,例如:

find -type f -empty -delete

该命令查找当前目录及其子目录中的所有文件(-type f),测试匹配的文件是否为空,如果-empty 返回true,则应用-delete 操作。

如果您想将操作限制在特定的深度级别,请使用-mindepth-maxdepth 全局选项。

【讨论】:

  • @Inian GNU find 手册指出 -delete“是由 BSD 系列操作系统引入的”,因此它应该比仅在具有 GNU find 的系统上更广泛可用.
  • @BenjaminW.:干杯!在这个POSIX页面上直接找不到,刚刚在FreeBSD页面上确认了
【解决方案2】:

命令是:

cd DirectoryWithTheFiles
rm -f $(find . -size 0)

【讨论】:

  • 这会破坏带有空格的文件名。
猜你喜欢
  • 2015-01-20
  • 1970-01-01
  • 2014-10-27
  • 2010-11-05
  • 2015-11-05
  • 2010-11-20
  • 2020-02-21
  • 2019-11-13
相关资源
最近更新 更多