开始学习一些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