私は次のようなことをしようとしています
ls -t | head -n 3 | xargs -I {} tar -cf t.tar {}
最後に変更された3つのファイルをアーカイブしますが、ファイルごとに個別にtarコマンドを実行し、最後に3つのファイルの最後を含む1つのtarファイルが残ります(順序は任意)。 「xargs」を正しく使用していないことはわかっていますが、検索しても効果がありませんでした。どちらも機能しない例を見つけました。より単純なコマンドでも
ls | xargs -I {} tar -cf t.tar {}
そのディレクトリ内のファイルの1つだけを含むtarファイルで終了します。
ls -t | head -n 3 | xargs tar -cf t.tar
私のために働く。 -I
フラグを設定する必要がある理由はありますか?
この投稿 によると、r
が入力を切り詰めて、最後のチャンクのみを含むtarファイルを生成する場合は、c
ではなくxargs
を使用することをお勧めします。したがって、より良い解決策は次のとおりです。
rm -f t.tar 2>/dev/null # remove tar if there
ls -t | head -n 3 | xargs tar -rf t.tar