如何使用升序读取带有数字名称的文件

时间:2015-05-05 13:46:31

标签: sh

我有几个文件名为: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等等。

2 个答案:

答案 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;