我有几个文件名为:file1.out,file2.out,file3.out,....,file15.out。我正在阅读每个文件并进行一些计算。这是一个例子。
for file in file*.out; do
echo $file
done
但是以这种方式正在以file1.out,file10.out ....,file15.out,file2.out ...,file9.out的顺序读取文件。有没有办法按升序读取这些文件,即file1.out然后file2.out等等。
答案 0 :(得分:2)
由于您知道自己拥有的文件数量,因此可以使用for integer loop
for i in $(seq 1 15); do
echo "file$i.out"
done
要完全符合POSIX(seq
不是标准实用程序),请使用while
循环和显式计数器
i=1
while [ "$i" -le 15 ]; do
echo "file$i.out"
i=$((i+1))
done
答案 1 :(得分:0)
如果您的文件少于100个,则可以使用以下表示法 file1.out => file01.out
即。使用ls -v而不是文件* .out
for i in `ls -v file*.out`; do
echo $i;
done;