2

ディレクトリに多数のファイルがあります。ディレクトリを調べて、各ファイルの最後の行を単一の新しいファイルに入れたいと思います。IE の場合、この新しいファイルには、ディレクトリ内のすべてのファイルの最後の行が含まれている必要があります。使ってみた

tail -n 1 | cat > newfile.txt

しかし、それは各行の間にソースファイル名を挿入しました. シェルスクリプトも書いてみましたが、成功したのは、宛先ファイルを作成し、データを追加せずに無期限に実行することだけでした。これを行う適切な方法は何ですか?どんな助けでも大歓迎です。

4

3 に答える 3

4

使用find:

find . -type f -exec tail -n1 {} >> newfile.txt \;

または、サブディレクトリをトラバースしたくない場合:

find . -depth 1 -type f -exec tail -n1 {} >> newfile.txt \;
于 2012-07-12T17:52:13.647 に答える
2

少なくともヘッダーを出力しないフラグがあるので、簡単ですcoreutils tail-q

tail -q -n1 * > OUTFILE

うまくいくでしょう。

于 2012-07-12T17:55:25.467 に答える
2

find動作しますが、sh/bash/ksh/zsh を使用している場合は for ループも動作します。

for filename in *; do
    tail -n 1 "$filename" >> /path/to/newfile.txt
done

newfile.txtfor ループを実行しているディレクトリと同じディレクトリにある場合、これで奇妙な結果が生じる可能性があることに注意してください*

于 2012-07-12T17:57:49.650 に答える