【问题标题】:Recursively copy /dev/null to file pattern递归复制 /dev/null 到文件模式
【发布时间】:2015-06-18 10:52:19
【问题描述】:

我正在使用已达到其磁盘配额的 ZFS 系统。因此,rm 命令不再对我可用。但是,我可以将/dev/null 复制到特定文件以有效地删除它们。

问题是我要清除的目录大小约为 40GB,每个有任何周长的文件都被埋在 3 个级别内。

有没有一种命令行方法可以轻松搜索并用/dev/null 替换这些文件?我可以在 Python/Perl 中轻松完成,但我想通过命令行尝试。

【问题讨论】:

标签: linux command-line zfs


【解决方案1】:

编辑:这是在 cmets 中找到的更好的答案:

find $DELDIR -type f -exec cp /dev/null "{}" \;

旧答案在这里:

find $DELDIR -type f | xargs cp /dev/null

其中$DELDIR 是要启动的目录的名称。-type f 选项仅针对文件,而不是目录。当然,xargs 只是在 cp /dev/null 的末尾加上 find 输出的每一行的文件名。

【讨论】:

  • 所以,当我这样做时,我会收到以下信息:cp: target dir1/dir2/dir3/file.log 不是目录。当它结束时,一切都没有改变。如果我在带有dir 的根目录中,我运行命令:find dir1 -type f | xargs cp /dev/null
  • @espais 抱歉,您是否遇到了包含空格的文件?试试这个find $DELDIR -type f -exec cp /dev/null "{}" \;
  • 做到了,谢谢。但是...没有任何带有空格的文件。不过有不少下划线。
  • @espais 太棒了!嗯,一定是其他一些必须引用的字符。
【解决方案2】:

仔细尝试:

find $DELDIR -type f | xargs cp -af /dev/null {} \;

【讨论】:

  • 对不起,@cptaffe 的回答是对的。只需使用-exec
猜你喜欢
  • 2011-10-27
  • 1970-01-01
  • 2019-11-04
  • 2014-07-10
  • 2017-10-03
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多