我在目錄中有許多文件。我想通過目錄,並將每個文件的最後一行放到一個新文件中。 IE中,這個新文件應該包含目錄中每個文件的最後一行。我試過使用將多個文件的最後一行復制到一個文件中
tail -n 1 | cat > newfile.txt
但是在每行之間插入了源文件名。我也嘗試編寫一個shell腳本,但它唯一成功的是創建目標文件,然後無限期地運行而不添加數據。什麼是正確的方法來做到這一點?任何幫助深表感謝。
我在目錄中有許多文件。我想通過目錄,並將每個文件的最後一行放到一個新文件中。 IE中,這個新文件應該包含目錄中每個文件的最後一行。我試過使用將多個文件的最後一行復制到一個文件中
tail -n 1 | cat > newfile.txt
但是在每行之間插入了源文件名。我也嘗試編寫一個shell腳本,但它唯一成功的是創建目標文件,然後無限期地運行而不添加數據。什麼是正確的方法來做到這一點?任何幫助深表感謝。
至少coreutils
tail
有-q
標誌,不輸出頭,所以一個簡單:
tail -q -n1 * > OUTFILE
會工作。
使用find
:
find . -type f -exec tail -n1 {} >> newfile.txt \;
或者,如果你不想遍歷子目錄:
find . -depth 1 -type f -exec tail -n1 {} >> newfile.txt \;
find
作品,而是一個for循環也適用,如果你在SH/bash中/ KSH/zsh的是。
for filename in *; do
tail -n 1 "$filename" >> /path/to/newfile.txt
done
注意,你可能有這種古怪的結果,如果newfile.txt
是,你在*
運行你的for循環的相同目錄。