
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
のと同じ方法で既にソートされているため、 は必要ありません。sort
sort
生成されたファイル リストをコマンドに渡す最も一般的な方法は、 を使用することですxargs
。xargs
詳細についてはマニュアル ページを参照してください。ただし、この場合はオプションは必要ありません。(xargs
ファイルの数が膨大である場合は、 は期待どおりに動作しない可能性がありますが、ほとんどの場合、その点について考える必要はなく、正常に動作します。)
tail
最近の多くの Linux システムで使用されているのバージョンは、 を-3
オプションとして受け入れません。 を使用する必要があります-n3
。
最後に、cat
パイプラインの最後の は何も役に立たないので、これも省略できます。
このコマンドはあなたが望むことを実行するはずです。
ls | xargs tail -n3
アップデート
tail
@AtomicHeartFatherの回答を読んで、問題の間違った部分に を入れてしまったかもしれないことに気付きました。その場合、コマンドは次のようになります。
ls | tail -n3 | xargs cat
これは、 を除いて、AtomicHeartFather が書いたものとほぼ同じですsort
。