tarボールに入れるファイルの数を制限し、現在のディレクトリに関係なくtarボールに挿入した後に削除したいと思います。私はこれを試しましたが、フルパスではなくファイル名のみを印刷する冗長なオプションtar -C ~/semios/tmp/ -cjvf ~/semios/tmp/test.tar.bz2 $(cd ~/semios/tmp/; ls *| head -5) | xargs rm -f
としてファイルを残します。私はパラメータを使って変更できると思いましたが、そうではありません。ヒントはありますか?tar
-C
答え1
パスに無効な文字(スペース、改行)がないとします。
... $(ls ~/semios/tmp/*| head -5) | xargs -d '\n' rm -f
または
... | { cd ~/semios/tmp/; xargs -d '\n' rm -f; }
または
tar -C ~/semios/tmp/ -cjvf ~/semios/tmp/test.tar.bz2 \
$(cd ~/semios/tmp/; ls * | head -5 |
{ while read file; do echo "$file"; rm -f "$file"; done;})
編集する
xargs
デフォルトでは、すべてのスペースが区切り文字として使用されるため、改行のみを区切り文字に設定する必要があります。ただし、この$()
例は名前にスペースがあっても競合が発生するためです。
答え2
または
$ tar -cjf test.tar.bz2 $(find ~/semios/tmp/ -name "*"| head -5 | xargs rm -f)