yuk*_*say 14 bash loops for-loop progress-bar tqdm
例如,我有一个for loop需要很长时间才能完成的例子,所以我想用tqdm一个像 python 一样的漂亮的进度条。但我找不到任何方法可以做到这一点?
for f in `find mydir -name *.jpg -print`; do cp $f images/${f//\//_}; done
Run Code Online (Sandbox Code Playgroud)
如何获得此循环的进度条?
要tqdm在 Bash 循环中使用,您需要:
donetqdm在你的情况下:
total=1000
for f in `find mydir -name *.jpg -print`; do echo $f; cp $f images/${f//\//_}; done | tqdm --total $total >> /dev/null
Run Code Online (Sandbox Code Playgroud)
查看答案:https://github.com/tqdm/tqdm/issues/436#issuecomment-330504048
这是一个非常老的问题,但目前的自述文件tqdm说,在 bash 中使用它作为命令效果很好,例如:
$ seq 9999999 | tqdm --bytes | wc -l\n75.2MB [00:00, 217MB/s]\n9999999\n\n$ tar -zcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \\\n > backup.tgz\n 32%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x8d | 8.89G/27.9G [00:42<01:31, 223MB/s]\nRun Code Online (Sandbox Code Playgroud)\n\n但是,tqdm显示进度条取决于为其提供构建进度条信息的命令,而该命令则cp不然(甚至cp -v不发送缓冲信息,因此您只能在cp完成后获得进度条)。
也就是说,如果您想要一个用于复制文件的进度条,您应该使用 或rsync --progress命令pv。
使用rsync,解决您的问题的命令可能类似于:
rsync -avzh --progress **/*.jpg images/\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6693 次 |
| 最近记录: |