모든 하위 디렉토리에서 특정 파일 유형을 tar하는 방법은 무엇입니까?
tar와 모든 .php 및 .html 파일을 디렉토리와 하위 디렉토리에두고 싶습니다. 내가 사용한다면
tar -cf my_archive *
내가 원하지 않는 모든 파일을 tars합니다. 내가 사용한다면
tar -cf my_archive *.php *.html
하위 디렉터리를 무시합니다. 재귀 적으로 tar를 만들지 만 두 가지 유형의 파일 만 포함하려면 어떻게해야합니까?
find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -
한 가지 방법은 다음과 같습니다.
tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )
그러나이 방법에는 몇 가지주의 사항이 있습니다.
- 공백이있는 파일이나 디렉토리가 있으면 실패합니다.
- 파일이 너무 많아 최대 명령 줄 길이가 꽉 차면 실패합니다.
이에 대한 해결 방법은 find 명령의 내용을 파일로 출력 한 다음 "-T, --files-from FILE"옵션을 사용하여 tar에 사용하는 것입니다.
패턴이 다른 여러 파일을 압축하려면 다음과 같이 공백으로 분리하고 모두 gz 파일에 추가 할 수 있습니다.
tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json
그러면 모든 하위 디렉토리에서 Alice로 시작하는 모든 .yml 파일이 추가되고 모든 하위 디렉토리에서 Bob으로 시작하는 모든 .json 파일이 추가됩니다.
이것은 공백이있는 경로를 처리합니다.
find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +
파일에 넣어
find . \( -name "*.php" -o -name "*.html" \) -print > files.txt
그런 다음 파일을 tar에 대한 입력으로 사용하고 사용하는 tar 버전에 따라 -I 또는 -T를 사용하십시오.
h를 사용하여 심볼릭 링크 복사
tar cfh my.tar -I files.txt
find ./ -type f -name "*.php" -o -name "*.html" -printf '%P\n' |xargs tar -I 'pigz -9' -cf target.tgz
멀티 코어 또는 단일 코어의 경우 :
find ./ -type f -name "*.php" -o -name "*.html" -printf '%P\n' |xargs tar -czf target.tgz
tar -cf my_archive `find ./ | grep '.php\|.html'`
"find"및 "grep"을 사용하여 모든 디렉토리 및 하위 디렉토리에있는 .php 및 .html 파일의 모든 경로를 가져옵니다. 그런 다음 압축 할 경로 정보를 tar에 전달합니다.
`및 '기호에주의하십시오. 이것은 다른 답변과 달리 쉘이 명령 줄에서 허용하는 문자 수의 제한에 도달합니다.
참고 URL : https://stackoverflow.com/questions/18731603/how-to-tar-certain-file-types-in-all-subdirectories
'Nice programing' 카테고리의 다른 글
jsFiddle에서 GitHub 파일 참조 (0) | 2020.11.17 |
---|---|
여러 연결에서 동시에 SQLite 데이터베이스를 읽고 쓸 수 있습니까? (0) | 2020.11.17 |
python pip는 라이브러리 디렉토리와 포함 디렉토리를 지정합니다. (0) | 2020.11.17 |
Vim : 단어 대 WORD (0) | 2020.11.17 |
배열을 반복하는 동안 Array # delete를 어떻게 사용할 수 있습니까? (0) | 2020.11.17 |