정규식을 사용하여 TAR 아카이브에서 파일을 제외시키는 방법은 무엇입니까?


10

간단한 질문이 있지만 답을 찾거나 해결할 수 없습니다. tar 아카이브를 만들고 싶지만 정규식을 사용하여 일부 파일을 제외 시키려고합니다.

제외 할 파일의 예는 다음과 같습니다. 68x640X480.jpg

나는 이것을 운없이 시도했다.

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

아무도 도와 줄 수 있습니까?

답변:


11

당신은 같은 몇 가지 추가 도구를 사용할 수 있습니다 findegrep:

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

위에서 언급 한 방법의 단점은 가능한 모든 파일 이름에 대해 작동하지 않는다는 것입니다. 또 다른 기회는 다음과 같은 내장 제외 기능을 사용하는 것입니다 tar.

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

불행하게도 두 번째 방법은 정규식에서는 작동하지 않지만 와일드 카드에서만 작동합니다.


고마워, 이것이 내가 찾던 것입니다. 어떤 파일 이름이 작동하지 않는지 메모 해주세요. 예를 들어 어떤 문자를 포함?
Frodik

당신은 그것에 대해 너무 걱정하지 않아도됩니다-대부분의 파일 이름은 해당 솔루션과 완벽하게 작동합니다. 문제는 UNIX / Linux 파일 이름에 제어 문자까지 거의 모든 것을 포함 할 수 있다는 것입니다. 이러한 모호한 조합은 첫 번째 솔루션에서 작동하지 않습니다.
Vladimir Blaskov

좋은는 유닉스 / 리눅스 / POSIX 파일 이름에 관련된 읽기 : dwheeler.com/essays/fixing-unix-linux-filenames.html
블라디미르 Blaskov을

0

어쩌면 당신은 cpio 를 시도해야

http://cybertiggyr.com/cpio-howto

파일 목록에서 읽고 아카이브를 수행합니다. 아래와 같이 sed를 사용하여 파일 목록을 생성 할 수 있습니다 .

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

그런 다음이를 cpio의 입력으로 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.