2011-08-13 47 views
1

相同的命令我做應用在不同的輸入文件不同的輸出文件

$ 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個文件只寫一個命令,它似乎不支持指定輸出文件名? 我敢肯定我在這裏錯過了一個命令,但我無法猜測如何在這裏使用xargs,有什麼想法?

回答

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 
+0

它的工作很好,謝謝你的替代品 – user869097

相關問題