在我的文件夹中,文件名如下:
A00001
A00002
.
.
.
A08525
我想将此文件名添加为参数:
max = 8525
for i in `seq 2 $max`
do
python script.py -r filename
done
我尝试过这样:
max = 8525
for i in `seq 2 $max`
do
python script.py -r "A0000$i" #But this work for 1-9 like wise for A000 it will work for 100-999
done
我做不到
for file in A*;
do
echo "$file"; done
done
因为该文件夹具有相同的文件,具有三个不同的扩展名,例如A0000.txt
,A0000.pdf
,A0000.png
,并且我只想输入A0000
作为参数。 / p>
如何编写for循环,以便可以读取所有文件名?
答案 0 :(得分:3)
您可以使用printf
来填充前导零的数字。
for ((i=1; i<=8525; ++i)); do
printf -v filename "A%05i" "$i"
python script.py -r "filename"
done
当然,如果基本文件名已经存在,则可以
for f in A[0-9][0-9][0-9][0-9][0-9].png; do
filename=${f%.png}
python script.py -r "$filename"
done
可以避免硬编码上限。
答案 1 :(得分:1)
for file in $(find /path/to/your/files -type f -name "A?????");do python script.py -r "$file"; done
答案 2 :(得分:1)
seq
的大多数(?)版本将支持输出0填充的值。
max=8525
for i in $(seq -w 2 $max); do
python script.py -r "A$i"
done
或者,您可以简单地循环现有文件并删除扩展名。
for f in A*.txt; do
f=${f%.txt}
python script.py -r "$f"
done