gpt4 book ai didi

Linux Bash 使用进度条遍历文件夹

转载 作者:IT王子 更新时间:2023-10-29 00:42:45 24 4
gpt4 key购买 nike

我正在编写一个小脚本来处理文件夹。运行时间很长,所以我想添加一个进度条。

这是迭代:

for file in */
do
#processing here, dummy code
sleep 1
done

拥有一个计数器并知道文件夹的数量将是一个解决方案。但我正在寻找更通用和更短的解决方案......

我希望有人能有想法。感谢您的关注,

朱利安

编辑:

我得到了这个解决方案,它可以做我想做的,而且是真正图形化的:

#!/bin/bash
n_item=$(find /* -maxdepth 0 | wc -l)
i=0
for file in /*
do
sleep 1 #process file
i=$((i+1))
echo $((100 * i / n_item)) | dialog --gauge "Processing $n_item folders, the current is $file..." 10 70 0
done

但是,我会保留 fedorqui 的解决方案,它不会占据所有屏幕。

非常感谢您的宝贵时间

最佳答案

基于我们在 How to print out to the same line, overriding previous line? 中发布的结果我得到了这个结果:

#!/bin/bash

res=$(find /* -maxdepth 0 | wc -l)
echo "found $res results"
i=1

for file in /*
do
echo -n "["
for ((j=0; j<i; j++)) ; do echo -n ' '; done
echo -n '=>'
for ((j=i; j<$res; j++)) ; do echo -n ' '; done
echo -n "] $i / $res $file" $'\r'
((i++))
sleep 1
done

例子

$ ./a
found 26 results
[ => ] 2 / 26 /boot
[ => ] 16 / 26 /root

关于Linux Bash 使用进度条遍历文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com