Shell脚本循环遍历文件名从0000到1500

时间:2012-03-26 10:58:54

标签: shell

我正在尝试创建一个shell脚本,该脚本将根据某些规则转换某些文件。文件的组织方式如下:

file_0000.adat
file_0001.adat
file_0002.adat
file_0003.adat
...
file_0010.adat
file_0011.adat
...
file_9999.adat

我当前的脚本如下所示:

#!/bin/sh

lauf=$(expr 0)

for filename in ../distData/file_*.adat
do
    ...
    lauf=$(expr $lauf + 1)
done;

但是现在我只想要数字从0000到1500的文件。对于转换,我需要文件的编号(由脚本中的变量lauf完成)。现在无法弄清楚如何做到这一点。

感谢您的回复。

3 个答案:

答案 0 :(得分:10)

尝试类似:

for i in $(seq -w 1500) ; do
  if [ -f ../distData/file_${i}.adat ] ; then
    # do whatever, the file number is ${i}
  fi
done

答案 1 :(得分:2)

我尝试过这样的东西来生成文件的数字模式。 您可以将代码的其他部分与文件名连接并搜索文件名

START=0
MAX=1500
while [ $START -le $MAX ]
do 
    PAT=$(printf "%04d" $START)
    echo $START $PAT
    START=`expr $START + 1`
done

答案 2 :(得分:0)

FILES=$(ls ../distData/file_{0000..1500}.adat 2>/dev/null)
for FILE in ${FILES[@]}; do
    #$FILE exists, do what you want
done

stderr重定向到/dev/null是为了禁止不存在范围内的文件的输出消息