2014-09-14 4 views
2

tar 파일을 찾고 파일을 추출한 다음 추출 된 모든 파일을 제거하려고합니다. 찾기 및 추출을 수행하거나 파일을 찾아서 제거 할 수 있습니다. 하지만 나는이 세 가지 모두를 함께 묶을 수는 없다.find * .tar 그런 다음 파일을 추출하고 삭제하십시오.

다음은 최선의 시도입니다. 그것은 오류없이 실행되지만 압축을 푼 파일을 삭제하지 않기 때문에 현재 디렉토리로 추출한 파일을 제거하는 방법에 주저합니다.

find ~ -name '*.tar' | xargs tar -xf && rm -f 

나는 다음 디렉토리를 제거 다른 디렉토리에 타르를 추출 시도했지만 xargs를 사용하는 동안 작동을 가져올 수 없습니다. 나는 꽤 다른 분야를 검색해 보았지만 아무 것도 찾을 수 없었기 때문에 도움을 주셔서 감사합니다.

+0

추출한 파일이나 타르볼을 제거 하시겠습니까? –

+0

모두에게 도움을 주셔서 감사합니다. 내가 결국 실행 : find -name 'file.tar'| xargs tar -xvf | xargs rm -f && rm 'file.tar'-f – CJ87

답변

6

&&은 파이프 라인을 끝내며, xargs 명령의 일부가 아닙니다.

당신은 find-exec 옵션을 사용하여 명령을 실행할 수 있습니다 :

find ~ -name '*.tar' -exec tar -xf {} \; -exec rm -f {} \; 
+0

이 접근법의 좋은 점은 첫 번째'exec'가 성공했을 때 두 번째'exec' 만 실행된다는 것입니다. 따라서 논리적으로 명령들 사이에'&& '를 갖는 것과 같다. – John1024

1

는 xargs를 두 또는 여러 명령을 실행하려면 :

find ~ -name '*.tar' | xargs -I {} sh -c 'tar -xf {} && rm -f {}' 

만 후 성공적으로 tar 파일을 삭제 풀기.

관련 문제