是否可以确定rm命令的进度?


18

根据rm -rf LargeDirectory目录的大小,用于删除大目录可能会花费大量时间。

是否可以获取状态更新或以某种方式监视此删除的进度以粗略估计命令在过程中的位置?


4
尝试watch -n 5 du -s LargeDirectory。观察其为零。
Mark Plotnick

@MarkPlotnick:在MacOS上,必须使用进行安装brew install watch,或参阅此处的说明。
smci

Answers:


19

man rm 

使用-v选项:

-v, --verbose
explain what is being done

4
不过这没有进展。“现在删除foo / bar”如何帮助您确定完整的内容有多远?
飞羊

@flyingsheep相信它消除了按字母顺序排列的一切,至少在OSX它,所以它确实有助于以某种方式..
蒂姆·巴斯

7

我看到这个问题已经老了。我想分享一下对我有用的东西,也许可以帮助其他人。

我使用pv命令行Pipe Viewer获取进度条

这是命令

rm -rv DIR_OR_FILE_NAME | pv -l -s $(du -a DIR_OR_FILE_NAME | wc -l)> / dev / null

如果您需要root权限才能删除目录或文件,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $(sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv-r以递归方式删除DIR和文件。-v详细列出所有要删除的文件和目录。

  • pv -l -s-l计算行数而不是字节数。-s设置要删除的总行数。

  • $( du -a <dir_or_file> | wc -l )du -a返回指定目录中所有文件和目录的列表。wc -l返回由输出的行数du -a

  • > /dev/null:将的输出发送rm -rv到任何地方。


好主意。如果任何名称包含换行符,这可能会导致文件/目录计数不正确;find {dir} -printf . | wc -c会更安全(但是-printfGNU扩展)。
斯科特(Scott)

这实际上是我想要的,谢谢。其他评论缺少一些东西。
Hellreaver

3

您可以使用Coreutils Progress Viewer(cv)查看任何当前正在运行的命令的进度。这不像发出单个命令,而是可以看到它的进度。

使用简历的例子

我确信有人可以拿出一个别名来使用命令来运行它。它也适用于cp, mv, dd, tar, gzip/gunzip, cat, etc.。有关它的更多详细信息,请参见

gitthub Xfennec /进度


2
由于进度(现在称为“ cv”)跟踪打开的文件,而rm不会打开它删除的文件,因此这实际上可能不是很有用。
dhag '17

2
@dhag你的权利,我认为这对RM有效。现在,我正在讨论是否删除答案。嗯
Ashitakalax
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.