Tar 존재하지 않는 파일 목록


10

나는 같은 스크립트에서 명령을 실행하고있다

tar -c -f ar.tar a b c d

여기서 b, c 및 d는 존재하지 않을 수 있으며 디렉토리 일 수 있습니다. 솔루션은 내가했습니다 것을의 출력 배관된다 마련 ls -d에를 grep그런 다음에 그것을 배분하고 tar명령 또는 확장 된 globs와 켜기 @(a|b|c|d).

이 작업을 수행하는 더 깔끔한 방법이 있습니까? --include매개 변수 가없는 Debian Wheezy에 있습니다 .


당신이 있습니까 --ignore-failed-read옵션을?
Costas

1
그것을 시도했지만 전혀 존재하지 않는 파일에 대해서는 여전히 오류가 발생했습니다.
gidyn

1
예, 오류 메시지가 있지만 아카이브가 작성되었습니다.
Costas

답변:


8

당신은 시도 할 수 있습니다

 tar cf ar.tar $(ls a b c d )

어디

  • c 창조를 위해
  • f ar.tar tar 파일을 지정하십시오

  • $(ls a b c d) 어떤 파일이 실제로 존재하는지 stdin에 나열하고 다른 파일에는 오류가 발생합니다.


2
tar cf ar.tar $(ls -d a b c d 2>/dev/null)완벽하게 작동합니다 ..하지만 난 extglob와 그것의 청소기 생각
gidyn

이제 스크립트를 대시로 포팅하고 있습니다. 아니요 extglob-위의 주석에 코드를 사용하고 있습니다
gidyn

1

tar 아카이브에 파일의 전체 경로가 있으면 괜찮습니다.

tar -c -f ar.tar $(readlink -e a b c d)

-ereadlink를하는 옵션은 기존 파일 이름을 정규화하고 자동으로 어떤 다른 사람을 무시합니다.


--strip-components추출하는 동안 그것이 효과가 있다고 생각합니다 .
gidyn

0

사용하다

find path/to/dir -name "*.ext1" -o -name "*.ext2"

설명

  1. 첫 번째 매개 변수는 검색하려는 디렉토리입니다.
  2. 기본적으로 find재귀가 수행됩니다.
  3. -o약자입니다 -or. 따라서 위는이 와일드 카드 또는이 와일드 카드를 검색한다는 의미입니다. 패턴이 하나만 있으면 필요 없습니다 -o.
  4. 와일드 카드 패턴 주위에 따옴표가 필요합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.