![Linux에서 특정 파일을 재귀적으로 압축을 푸는 방법은 무엇입니까? [복사]](https://linux55.com/image/132069/Linux%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9E%AC%EA%B7%80%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%95%95%EC%B6%95%EC%9D%84%20%ED%91%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
타르가 많아요 (.tar.bz2)에는 여러 파일 형식의 파일이 포함되어 있습니다.재귀 디렉터리. 한 가지 유형의 파일만 추출하고 싶습니다(예를 들어. txt파일) 모든 디렉토리에서. 어떻게 해야 하나요? 나는이 명령을 가지고모든 파일 추출각 디렉토리에서:
for file in *.tar.bz2; do tar -jxf "${file}"; done
그냥 추출하고 싶은데".TXT"전체 대신 파일.
답변1
GNU tar 맨페이지를 인용하면 다음과 같습니다.
따라서 이름이 ".c"로 끝나는 파일을 추출하려면 다음을 사용할 수 있습니다.
$ tar -xf foo.tar -v --wildcards '*.c'
따라서 귀하의 경우에는 다음을 선택하겠습니다.
for file in *.tar.bz2; do tar -jxf "${file}" --wildcards '*.txt'; done
답변2
bsdtar를 사용하면 glob을 지정할 수 있습니다:
for file in *.tar.bz2; do tar -jxf "$file" '*.txt'; done
gnutar를 사용하려면 --wildcards 플래그를 추가해야 합니다.
for file in *.tar.bz2; do tar -jxf "$file" --wildcards '*.txt'; done