bash - 如何在 bash for 循环中使用 tqdm?

标签 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

如何获得此循环的进度条?

最佳答案

这是一个非常古老的问题,但目前 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/

相关文章:

bash - 如何检查字符串是否以 bash 中的方括号开头

bash - 为什么 bash 函数使用圆括号,如果圆括号从不填充参数?

c - 将数据读取和写入文件打印无效数据

batch-file - 批处理如何正确结束 for 循环

空的 for 循环可以是 "correct"吗?

bash - OSX 命令 find -type f -exec file {}\: not working

bash - bash 中变量不等式的正确语法是什么?

java - for 循环到 while 循环

python - 如何使用 tqdm 遍历列表

java - 从数组中打印值时出现 ArrayIndexOutOfBoundsException