2013-02-15 2 views
0

디렉토리에 다음 파일 구조가 있습니다.subDirectory의 파일에 대한 프로그램 실행

Directory 
    /A/abc.xyz 
    /B/abc.xyz 
    /C/abc.xyz 
    /D/abc.xyz 
    /E/abc.xyz 

나는 각 하위 디렉토리에 acb.xyz에서 프로그램을 실행합니다. 출력 파일을 다른 디렉토리 (예 : Directory/processed)에 출력 파일 이름에 SubDirectory라는 이름으로 추가하십시오. 다음과 같이 작성할 수 있습니까? 수정이 필요합니다.

for i in `ls "Directory/"` 
do 
    program.pl $i/abc.xyz > processed/$i-abc.xyz 
done 
+0

있습니까 :이 경우 먼저 디렉토리 변경을 단순화 할 수 munging 문자열에 대한 대안으로

? –

+0

나는 그것을 얻었다, 당신에게 @ JohnKugelman. 입출력에 ""을 넣으면 문제가 해결되었습니다. – SNA

+0

또한 루프에 들어가기 전에'processed' 디렉토리를 생성해야합니다 – SNA

답변

2
for dir in Directory/*; do 
    program.pl "$dir/abc.xyz" > "processed/${dir##*/}-abc.xyz" 
done 

${dir##*/} 부분은 너무 Directory/A 그냥 A되고, $dir에서 선두 디렉토리 이름을 제거합니다. 공백이있는 디렉토리 이름이 문제를 일으키지 않도록 따옴표를 추가했습니다. 공백이 없다고해도 좋은 습관입니다. 당신이 무엇을 쓸에 문제가

cd Directory 

for dir in *; do 
    program.pl "$dir/abc.xyz" > "processed/$dir-abc.xyz" 
done 
관련 문제