tarball 挿入後のファイルの削除

tarball 挿入後のファイルの削除

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)

関連情報