Directory
如何在一個循環中連接兩個文件?
我有兩個文件要連接到一個新文件中,但我想通過使用循環來完成,因為我有不同的目錄(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