我有两千套文件,一套有name.ext
,另一套用同名name.new.psl
。因此,对于每个name.ext
,都有一个name.new.psl
。现在我必须将此作为参数传递给诸如customise.pl name.ext name.new.psl
关于bash循环的任何想法?第一个名称对于每个name.ext
和name.new.psl
都很常见,如:
perl customise.pl name.ext name.new.psl
答案 0 :(得分:4)
for f in *.ext ; do
perl customise.pl "${f}" "${f/%.txt/.new.psl}"
done
将在当前工作目录中为您完成。
答案 1 :(得分:2)
for fname in *.ext
do
perl customise.pl "$fname" "${fname%.ext}.new.psl"
done
以上不需要任何特殊的bash功能。因此,它与例如dash
兼容,它是debian派生的发行版的默认shell(/bin/sh
)。
上面的诀窍是${fname%.ext}
告诉shell从.ext
的末尾删除文本$fname
,只留下“名称”部分。因此,"${fname%.ext}.new.psl"
删除.ext
会添加.new.psl
扩展名。
上面代码中的文件名是双引号。这样即使文件名中包含空格,该脚本也能正常工作。
答案 2 :(得分:-1)
for i in `ls *.ext`; do NAME=`echo $i | awk -F '.' '{print $1}'`; perl customise.pl $NAME.ext $NAME.new.psl; done