2012-09-17 57 views
0

我想將awk輸出文件移動到一個文件夾中。每個輸出文件的名稱應該是輸入文件的名稱。我使用了下面的程序。但是這個程序將每個輸出文件保存爲「out」,並且其目錄名稱是輸入文件的名稱。如何更改以下代碼以將輸出保存到具有輸入文件名的單個文件夾中。如何將awk輸出移動到單個文件夾?

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

應該怎樣輸出文件被稱爲?或者應該將多個文件的輸出放在一個「out」文件中? – beny23

+0

輸出文件應該是文件名的名稱。在我的程序中,所有輸出文件被命名爲out,而不是文件名。 – 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

您可以通過從dir改變更改所需的目錄名,以anything

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

相關問題