插入 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)

相关内容