2012-09-17 4 views
0

awk 출력 파일을 단일 폴더로 이동하려고합니다. 각 출력 파일의 이름은 입력 파일의 이름이어야합니다. 나는 다음 프로그램을 사용했다. 그러나이 프로그램은 각 출력 파일을 "out"으로 저장하고 디렉토리 이름은 입력 파일의 이름입니다. 입력 파일 이름이있는 단일 폴더에 출력을 저장하려면 다음 코드를 어떻게 변경하면됩니까?awk 출력을 단일 폴더로 이동하는 방법은 무엇입니까?

for i in file/*.txt; do mkdir "$i"_dir; awk -f script.awk "$i" > "$i"_dir/out; done 
+0

에, dir에서 변경하여 원하는 디렉토리 이름을 변경할 수 있습니다 시도 ? 아니면 여러 개의 파일에 대한 출력을 하나의'out' 파일에 포함시켜야합니까? – beny23

+0

출력 파일은 파일 이름의 이름이어야합니다. 내 프로그램에서 모든 출력 파일의 이름은 파일 이름 대신 출력됩니다. – user1466236

답변

1
for i in file/*.txt; do 
    awk -f script.awk "$i" > out; 
done 

for i in file/*.txt; do awk -f script.awk "$i" > out; done 

출력 파일은 간단하게 "밖으로"현재 디렉토리에 지정됩니다 작업, 또는 인라인한다.

또한 디렉토리를 만들지 않으며 출력을 저장하지도 않습니다. 디렉토리를 만들지 만 디렉토리에 쓸 수 없으면 mkdir 명령을 다시 추가해야합니다.

편집 업데이트 된 질문 당

를 먼저 출력 디렉토리를 만들고 싶어 것, 그것을 foo를 호출 할 수 있습니다. 다음 실행할 수있는 기본 폴더 내부에서

mkdir foo 

은 이제 디렉토리 구조는 다음

 
/path/to/your/base-folder/ 
         ./file/ <-- The directory in which your .txt files reside 
         ./foo/ <-- Your output folder 

과 같아야합니다

for i in file/*.txt; do awk -f script.awk "$i" > foo/"$i"; done 

또는 당신이 파일 확장자를 원하는 경우 출력 파일 :

for i in file/*.txt; do awk -f script.awk "$i" > foo/"$i".txt; done 
+0

'out'은 마지막 파일의 결과 만 포함합니다. 각 반복은 마지막 파일의 결과를 덮어 씁니다. – beny23

+0

제 수정 된 질문을보십시오. – user1466236

+0

@ user1466236 - 내 대답을 업데이트했습니다. – jedwards

0
모든 출력을 원하는 경우> 대신 >>을 추가해야합니다

jedwards. 그렇지 않으면 사이클의 마지막 반복 만있을 것입니다.

for i in file/*.txt; do awk -f script.awk "$i" >> out; done 
+0

네, 맞습니다. +1 – jedwards

0

루프 외부로 출력 리디렉션을 이동하십시오.

mkdir dir 
for i in file/*.txt; do 
    awk -f script.awk "$i" 
done > dir/out 
0
for i in file/*.txt; #get a value for "i" 
do mkdir "$i"_dir; #create a folder called *value for i"_dir 
awk -f script.awk "$i" > "$i"_dir/out; done #save the output to the created 
              #directory saving only the last 
              #iteration of the cycle, as @farid said. 

for i in file/*.txt; do mkdir dir; awk -f script.awk "$i" >> dir/out; done

당신은 출력 파일을 호출 할 필요가 무엇 anything

for i in file/*.txt; do mkdir anything; awk -f script.awk "$i" >> anything/out; done

관련 문제