パイプされたコマンドの結果をcatで取得しようとしています

パイプされたコマンドの結果をcatで取得しようとしています

list20140801.txt list20140802.txt .... という名前のファイルのフォルダーがあります。

私はこれをやろうとしている

ls | sort | tail -3 | cat

しかし、ファイル名が提供されるだけで、cat されるわけではありません。

答え1

マニュアルによるとcat、猫の仕事は次のとおりです。

FILE または標準入力を標準出力に連結します。

cat標準入力をファイル名として扱う理由はありません。必要なのは

ls | ソート | 末尾 -3 | xargs cat

その代わり。

xargs詳細については、man ページを確認してください。http://linux.about.com/library/cmd/blcmdl1_xargs.htm

答え2

の出力は、デフォルトでソートされるlsのと同じ方法で既にソートされているため、 は必要ありません。sortsort

生成されたファイル リストをコマンドに渡す最も一般的な方法は、 を使用することですxargsxargs詳細についてはマニュアル ページを参照してください。ただし、この場合はオプションは必要ありません。(xargsファイルの数が膨大である場合は、 は期待どおりに動作しない可能性がありますが、ほとんどの場合、その点について考える必要はなく、正常に動作します。)

tail最近の多くの Linux システムで使用されているのバージョンは、 を-3オプションとして受け入れません。 を使用する必要があります-n3

最後に、catパイプラインの最後の は何も役に立たないので、これも省略できます。

このコマンドはあなたが望むことを実行するはずです。

ls | xargs tail -n3

アップデート

tail@AtomicHeartFatherの回答を読んで、問題の間違った部分に を入れてしまったかもしれないことに気付きました。その場合、コマンドは次のようになります。

ls | tail -n3 | xargs cat

これは、 を除いて、AtomicHeartFather が書いたものとほぼ同じですsort

関連情報