ファイルのリストを含むテキストファイルがあります。
私は使用します。
tar --null --no-recursion -uf abc.tar --directory= /tmp/temp --files-from abc.txt
このコマンドは、単にテキストファイルにリストされているすべてのファイルを含むtarを生成します。
リストから選択した数のファイルのみを圧縮する方法はありますか?たとえば、テキストファイルにリストされている最初の50ファイルのみが説明されます。
ベストアンサー1
次のように試すことができます:(ファイル名にスペースを許可するように更新されました。)
head -50 abc.txt | tr "\n" "\0" | xargs -0 tar --null -no-recursion -uf abc.tar --directory=/tmp/temp
このコマンドはhead -50
リストファイルの最初の50行を取得します。結果|
はにパイプされますtr
。デフォルトでは、改行文字をnull文字に置き換えるtr
変換操作が行われます。結果はにパイプされ、その行をすべてコマンドの引数に変換します。引数は、空白ではなくNULL文字に基づいて別々の引数を作成します。これにより、ファイル名にスペースが含まれていてもコマンドが機能します。\n
\0
xargs -0
tar
-0
xargs
コメントをお寄せいただいたJordanに感謝します。