我正在尝试创建一个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
完成)。现在无法弄清楚如何做到这一点。
感谢您的回复。
答案 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
是为了禁止不存在范围内的文件的输出消息