我想知道是否有任何方式来显示某些types的进展信息,当在Linuxsearch文件使用find
。 我经常发现自己在一个大磁盘上search文件,某种进度指示器会非常有帮助,就像一个栏或者至less当前目录“find”在里面search。是否有任何脚本可以这样做,或者是否find
支持挂钩?
用这个技巧,你可以看到当前的文件夹 – 但没有进度条 – 对不起。
watch readlink -f /proc/$(pidof find)/cwd
一个叫pv (pipe道查看器)的小工具可能会有所帮助。 从Peteris Krumins的精彩总结 :
pipe道查看器是一个基于terminal的工具,用于通过pipe道监视数据的进度。
您可以通过多种方式使用pv。 在这里玩耍的时候,我把它放在一个pipe道后面,以监控find生成的输出的进度(应该把stdin改为stdout)
find / -mtime -1h | pv > /dev/null
这将显示输出有点像这样:
6.42MB 0:01:25 [31.7kB/s] [ <=> ]
(我把stdoutredirect到了/ dev / null,这样我就可以看到进度条没有输出,这可能不是你用find的意图,所以要相应地调整)
我真的不知道这是如何在野外工作。 对于像上面那样的“昂贵”的发现(从根本上来说),它看起来工作得很好。 对于目录树中更深层节点中的简单命令,pv失败了。 这些命令立即返回结果,所以进度条可能在这里。
无论如何,玩一下,看看这是否可以满足你的需求。 至less是思考的食物。
有一个与man find
平行search的例子。 使用它,您可以对每个项目执行多个检查,根据哪个条件执行多个操作。 第一个检查可能是,例如,简单的-print
,所以所有的名字打印到标准输出。 第二次检查将做你想要的。 就像是:
find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)
如果第二个检查也应该显示文件名,您可以使用-fprint /dev/stderr
将其中一个redirect到-fprint /dev/stderr
。
我今天search了这个,通过Google来到这里。 我有一个长期运行在OS X上运行,显然, watch
不存在那里。 所以这是另一个解决scheme:
lsof -Fn -a -c find -d cwd +r 10
lsof
=打开的文件列表 -Fn
=只显示文件/目录的名称(前缀为'n'字符,如果你喜欢完整的lsof
输出 -a
=告诉lsof
只显示符合所有条件的行(默认情况下显示符合任何条件的行) -c find
=显示由名为find
的进程打开的文件/目录(实际上,名称以find
开头的进程,但区分大小写,所以Finder
不会显示) -d cwd
=显示FD(filedescriptor)行cwd(当前工作目录) +r 10
=每10秒显示输出,直到找不到打开的文件(查找完成) 这将显示目录find
处理每10秒,所以它应该给出一个想法,如果find
仍然工作,并有多远进展。
AFAIK,它没有,执行它将是非常平凡的。
…嗯。 也许一个脚本首先find <target dir> -type d
,存储列表,然后在for循环中运行find <list item> -maxdepth 1 <rest of find parameters>
之前回显每个dir。
请注意,您正在交易显着/损失的performance,以便能够隐约看到它在做什么。