一次处理多个文件的bash脚本
我在一个文件夹中有多个扩展名的文件,如.txt、.update、.text。文件名如下 out1.txt, out1.text, out1.update out2.txt, out2.text, out2.update 以此类推……我的命令如下所示:一次处理多个文件的bash脚本,bash,shell,loops,Bash,Shell,Loops,我在一个文件夹中有多个扩展名的文件,如.txt、.update、.text。文件名如下 out1.txt, out1.text, out1.update out2.txt, out2.text, out2.update 以此类推……我的命令如下所示: ./script.pl out1.txt out1.text out1.update 我想把这个命令放在每个文件的循环中。我尝试使用如下循环: for i in *.{txt,text,update} 但是它使用了包括扩展名在内的全名,所以我不
./script.pl out1.txt out1.text out1.update
我想把这个命令放在每个文件的循环中。我尝试使用如下循环:
for i in *.{txt,text,update}
但是它使用了包括扩展名在内的全名,所以我不知道如何在命令中推断特定的扩展名文件
谢谢 ext=$(awk-F\.{print.“$NF}”您可以使用:
ext=$(awk -F\. '{ print "."$NF }' <<< $i)
fil=$(basename -s $ext $i)
for f in *.txt;
do
b=${f%.txt} # the trick is there
./script.pl $b.txt $b.text $b.update
done
可能是重复的我检查了它,但它是不同的。它给出了一个错误,没有找到“b”命令。我通过多次测试,但它给出了一个错误。它工作了。我在变量“b”和等号“=”之间有空格。我删除了它,然后它工作得很好。谢谢!@AsmaTahir,的确,bash对“=”前后的空格很敏感。是的,我后来注意到了空格,这就是我删除它的原因。再次感谢!