tar와 모든 .php 및 .html 파일을 디렉토리와 하위 디렉토리에두고 싶습니다. 내가 사용한다면
tar -cf my_archive *
내가 원하지 않는 모든 파일을 tars합니다. 내가 사용한다면
tar -cf my_archive *.php *.html
하위 디렉터리를 무시합니다. 재귀 적으로 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 -
-o -name [pattern]
각각의 새로운 조건
bash
버전> 4.0을 사용하는 경우 다음 shopt -s globstar
과 같은 짧은 작업을 수행 할 수 있습니다 .
shopt -s globstar; tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json
이렇게하면 임의의 하위 디렉터리에서 Alice로 시작하는 모든 .yml 파일이 추가되고 임의의 하위 디렉터리에서 Bob으로 시작하는 모든 .json 파일이 추가됩니다.
shopt -s globstar
옵션을 대답은 정확하고 실제로 가장 좋은 하나입니다, 그래서
한 가지 방법은 다음과 같습니다.
tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )
그러나이 방법에는 몇 가지주의 사항이 있습니다.
이에 대한 해결 방법은 find 명령의 내용을 파일로 출력 한 다음 "-T, --files-from FILE"옵션을 사용하여 tar에 사용하는 것입니다.
이것은 공백이있는 경로를 처리합니다.
find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +
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