我有这个 for loop
例如需要很长时间才能完成,所以我想使用 tqdm
有一个很好的进度条,就像在 python 中一样。但我找不到任何方法来做到这一点?
for f in `find mydir -name *.jpg -print`; do cp $f images/${f//\//_}; done
如何获得此循环的进度条?
最佳答案
这是一个非常古老的问题,但目前 the readme for tqdm
说在 bash 中将它用作命令可以正常工作,例如:
$ seq 9999999 | tqdm --bytes | wc -l
75.2MB [00:00, 217MB/s]
9999999
$ tar -zcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \
> backup.tgz
32%|██████████▍ | 8.89G/27.9G [00:42<01:31, 223MB/s]
然而,
tqdm
显示进度条取决于为其提供信息以从中构建进度条的命令,cp
不会(即使 cp -v
也不发送缓冲信息,因此您只会在 cp
完成后才能看到进度条)。也就是说,如果你想要一个用于复制文件的进度条,你应该喜欢到
rsync --progress
或 pv
命令。使用
rsync
,解决您的问题的命令可能类似于:rsync -avzh --progress **/*.jpg images/
关于bash - 如何在 bash for 循环中使用 tqdm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372970/