Directory

如何在一個循環中連接兩個文件?

  • February 21, 2017

我有兩個文件要連接到一個新文件中,但我想通過使用循環來完成,因為我有不同的目錄(a、b、c、g 和 z)和相同的 2 個文件。我的循環是:

for i in a b c g z
do
   (cd $i/; for i in File_*_best3.txt *_new3.txt; do cat $i > combined.txt; done)
done

但是我的結果是一個combined.txt與我的第二個輸入文件完全相同的文件,所以我的貓不能正常工作。這裡有什麼問題?

問題是每次cat執行時,輸出文件都會被截斷(清空)。這是因為您>用於重定向。

選擇:

for d in a b c g z
do
   (cd "$d"; rm -f combined.txt; for i in File_*_best3.txt *_new3.txt; do cat "$i" >>combined.txt; done)
done

或者

for d in a b c g z
do
   (cd "$d" && cat File_*_best3.txt *_new3.txt >combined.txt)
done

我假設每個File_*_best3.txt*_new3.txt匹配一個文件名。

另一個沒有的解決方案cd

for d in a b c g z; do
   cat $d/{File_*_best3.txt,*_new3.txt} >$d/combined.txt
done

引用自:https://unix.stackexchange.com/questions/343795