我想將awk輸出文件移動到一個文件夾中。每個輸出文件的名稱應該是輸入文件的名稱。我使用了下面的程序。但是這個程序將每個輸出文件保存爲「out」,並且其目錄名稱是輸入文件的名稱。如何更改以下代碼以將輸出保存到具有輸入文件名的單個文件夾中。如何將awk輸出移動到單個文件夾?
for i in file/*.txt; do mkdir "$i"_dir; awk -f script.awk "$i" > "$i"_dir/out; done
我想將awk輸出文件移動到一個文件夾中。每個輸出文件的名稱應該是輸入文件的名稱。我使用了下面的程序。但是這個程序將每個輸出文件保存爲「out」,並且其目錄名稱是輸入文件的名稱。如何更改以下代碼以將輸出保存到具有輸入文件名的單個文件夾中。如何將awk輸出移動到單個文件夾?
for i in file/*.txt; do mkdir "$i"_dir; awk -f script.awk "$i" > "$i"_dir/out; done
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
'out'只包含最後一個文件的結果,因爲每次迭代都會覆蓋最後一個文件的結果。 – beny23
請看看我編輯的問題。 – user1466236
@ user1466236 - 我更新了我的答案 – jedwards
個jedwards,
必須到位>如果你希望所有的輸出加>>。否則你只會有最後一次循環。
for i in file/*.txt; do awk -f script.awk "$i" >> out; done
是的,你說得對+1 – jedwards
將輸出重定向移到循環外部。
mkdir dir
for i in file/*.txt; do
awk -f script.awk "$i"
done > dir/out
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
應該怎樣輸出文件被稱爲?或者應該將多個文件的輸出放在一個「out」文件中? – beny23
輸出文件應該是文件名的名稱。在我的程序中,所有輸出文件被命名爲out,而不是文件名。 – user1466236