開始學習一些shell腳本。我有一個perl腳本在一個文件上運行。我將如何編寫一個shell腳本來在其中包含關鍵字「filename」的所有文件上多次運行perl腳本?在unix中的多個文件上運行腳本
英語所以,
for /filename/ in filenames
perl myscript.pl completefilename
感謝。
開始學習一些shell腳本。我有一個perl腳本在一個文件上運行。我將如何編寫一個shell腳本來在其中包含關鍵字「filename」的所有文件上多次運行perl腳本?在unix中的多個文件上運行腳本
英語所以,
for /filename/ in filenames
perl myscript.pl completefilename
感謝。
find . -name "filename*" -exec perl myscript.pl '{}' \;
在bash:
files=`ls -1 *`
for $file in $files;
do
perl myscript.pl $file;
done
FILES = 「關鍵字」
對於f在 「$ FILES」 做 perl的myscript.pl $ F 做
但$ f拉起關鍵字,而我想整個文件名(包括關鍵字)。 – Dirk 2009-07-06 16:31:37
find . -path "\*filename\*" -exec perl myscript.pl {} \;
編輯:逃星,不想在這裏
for i in $(\ls -d filenames)
do
perl myscript.pl $i
done
標記的「ls」的命令之前的反斜槓是暫時禁用任何別名。
HTH
一個內膽:
$ for file in filename1 filename2 filename3; do perl myscript $file; done
相反,文件名,你還可以使用通配符的空間分隔的列表,例如:
$ for file in *.txt *.csv; do perl myscript $file; done
如果你在你的文件名中有空格,使用舊的待機
find . -maxdepth 1 -print0 | xargs -0 perl myscript.pl
我個人使用zsh的外殼,它給你一個很好的方式對一組子目錄的遞歸運行命令。它還允許您更改文件,用蹩腳的創造.wav文件MP3文件時,這是handly的後綴:在
爲我**/* WAV;跛腳$我$我:r.mp3
你也可以管一個命令的輸出到另一個,這是我經常使用的東西,當我下載一些bittorrent文件,並希望看到每個下載的百分比已完成:
在**/* TXT了我。 grep -H%$ i | tail -1
只有在文件名中沒有空格的情況下,它纔有效。 – hillu 2009-07-06 16:39:23