
나는 다음과 같은 점을 고려하여:
- 1000개 이상의 파일이 포함된 디렉토리를 보유하세요.
- 이러한 파일의 하위 집합을 포함하는 gzip으로 압축된 tar 파일(x.tgz)이 있습니다.
gzip으로 압축된 tar 파일의 내용을 읽고 tar 파일에 포함된 디렉터리에서 모든 파일을 삭제하는 단일 명령줄(가능한 경우)은 무엇입니까?
답변1
tar 파일을 생성한 디렉토리(예: )에 있어야 합니다 $HOME
. 그런 다음 Documents 디렉토리에 보안 tgz가 있으면 /backup/Documents.tgz
다음을 수행할 수 있습니다.
$ for file in $(tar -tzf /backup/Documents.tgz); do \
[[ -f $file ]] && rm $file || echo "$file does not exist"; done
디렉토리를 삭제하려면 rm -fr $file
.
답변2
어쩌면 이런 것이 당신에게 도움이 될 것입니다
rm -rf `find . -name '*.tgz' -exec tar -tzf '{}' \;`
그렇게 많은 파일을 어떻게 처리하는지 잘 모르겠습니다.
답변3
$ tar -tzf x.tgz |grep -v '/$' | xargs -n1 -d '\n' echo rm
echo
괜찮아 보이면 삭제하세요.
설명하다:
tar -tzf x.tgz
-- 목록 내용grep -v '/$'
-- 디렉토리 건너뛰기xargs -n1 -d '\n' echo rm
-- ( ) 입력-n1
의 각 ( ) 줄 에 대해 다음을 실행합니다.-d '\n'
echo rm
답변4
tar(비상세 모드에서도)는 tar t
출력에 심볼릭 링크와 하드 링크를 나열하므로 tar t
. 사용하는 것이 더 좋습니다:
star -t -tpath < archive.tar > file-list.txt