在这个问题中:如何在不删除 bash 中的目录的情况下删除目录中的所有文件和子目录?询问如何删除文件夹中的所有文件,而不是文件夹本身。
马特s 出色的答案包括在‘rm’命令中使用 -v 标志。
rm -rfv dontDeleteMe && mkdir dontDeleteMe
我留下的命令是上面的命令。确实很有用,但是“rm”中的 -v 标志是否会减慢通过命令行执行的任务的速度?
我有一个包含 .txt 文件(大约 100,000 个)的文件夹,我已经创建、删除并重新创建了好几次。有时使用 rm,有时在文件浏览器中,我感觉使用 rm 命令的速度甚至更慢,如上所示。-v 标志与此有什么关系吗?
答案1
是的,-v 标志会减慢命令的速度。
大多数(如果不是全部)软件(或命令)都会检查是否提供了标志,然后执行一堆与标志相关的代码。如果是 -v 标志,它们可能会执行一堆输出命令(如echo
或printf
),如果没有标志,它们宁愿跳过这些命令。
这意味着处理器拥有更多的指令周期,从而拥有更多的执行时间。
如果您不打算阅读/不需要这些消息,最好不要使用 -v 标志。
另一方面,假设不包括输入命令和按下按键所需的时间,CLI 会/应该比 GUI 更快Enter。
从超级用户的这个博客这张图片很好地解释了速度缓慢的原因
对于所讨论的特定命令,time 命令的结果是
//with -v
real 0m8.753s
user 0m0.816s
sys 0m2.036s
//without -v
real 0m1.282s
user 0m0.124s
sys 0m1.092s
这是对包含 100000 个空文件的目录进行的
答案2
为什么不自己去发现呢:利用时间。
$ time rm -rfv dontDeleteMe && mkdir dontDeleteMe
real 0m0.003s
user 0m0.001s
sys 0m0.002s
$ time rm -rf dontDeleteMe && mkdir dontDeleteMe
real 0m0.002s
user 0m0.001s
sys 0m0.001s