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)