将不同输入文件上的相同命令应用于不同的输出文件

时间:2011-08-13 10:13:39

标签: shell cut

我在做

$ cut -f 1,5,6 myfile1.csv > myoutput1.csv
$ cut -f 1,5,6 myfile2.csv > myoutput2.csv
$ cut -f 1,5,6 myfile3.csv > myoutput3.csv

...

假设我有400个文件,我只想为400个文件编写一个命令,看来cut不支持指定输出文件名? 我确定我在这里错过了一个命令,但我想不出如何在这里使用xargs,任何想法?

1 个答案:

答案 0 :(得分:4)

for i in `seq 1 3`; do cut -d, -f1,5,6 "myfile${i}.csv" > "myoutput${i}.csv"; done

要处理任意文件名,请尝试以下操作:

for filename in `find . -maxdepth 1 -name '*.csv' | cut -d/ -f2 | cut -d. -f1`
do
    cut -d, -f1,5,6 "${filename}.csv" > "${filename}.out.csv"
done

另一种剥皮猫的方法:

for filename in `find -name '*.csv' -exec basename "{}" \;`
do
    cut -d, -f1,5,6 $filename > ${filename/.csv}.out.csv
done
相关问题