2009-07-06 6 views
7

일부 쉘 스크립팅을 배우기 시작했습니다. 한 파일에서 실행되는 펄 스크립트가 있습니다. 펄 스크립트를 키워드 "filename"을 가진 모든 파일에 여러 번 실행하는 쉘 스크립트를 작성하는 방법은 무엇입니까? 영어 그래서 유닉스의 여러 파일에 스크립트를 실행하십시오.

,

for /filename/ in filenames 
    perl myscript.pl completefilename 

감사합니다. 배쉬에서

답변

10
find . -name "filename*" -exec perl myscript.pl '{}' \; 
1

:

files=`ls -1 *` 
for $file in $files; 
do 
    perl myscript.pl $file; 
done 
+0

공백이있는 파일 이름이없는 한 작동합니다. – hillu

4
find . -path "\*filename\*" -exec perl myscript.pl {} \; 

편집 : 탈출 별, 여기

4
for i in $(\ls -d filenames) 
do 
    perl myscript.pl $i 
done 

마크 업 'ls'이 명령 앞에 백 슬래시 일시적으로 별칭을 사용하지 않도록하는 것입니다 싶지 않았다. 예를 들어 대신 당신은 또한 와일드 카드를 사용할 수있는 파일 이름의 공백으로 구분 된 목록의 $ for file in filename1 filename2 filename3; do perl myscript $file; done

, :

$ for file in *.txt *.csv; do perl myscript $file; done

1

하나 라이너

파일 이름에 공백이 있으면 이전 대기 모드를 사용하십시오.

find . -maxdepth 1 -print0 | xargs -0 perl myscript.pl 
2

그리고 만약 HTH

0

나는 개인적으로 당신에게 하위 집합에 재귀 적으로 명령을 실행 할 수있는 아주 좋은 방법을 제공하는 zsh을 쉘을 사용합니다. 또한 파일 접미사를 변경하여 절름발이를 사용하여 .wav 파일의 MP3 파일을 만들 때 손쉽게 사용할 수 있습니다.

for **/*. wav; lame $ i $ i : r.mp3

하나의 명령 출력을 다른 명령으로 파이프 할 수도 있습니다.이 명령은 비트 토런트 파일을 여러 개 다운로드 할 때 자주 사용하며 각 다운로드마다 백분율을보고 싶습니다. 완료되었습니다 :

**/*. txt; grep -H % $ i | tail -1

관련 문제