tar가있는 Ubuntu의 와일드 카드 *가 일부 파일을 복원하지 못하는 것이 그럴듯합니까?


3

이 명령 행 순서에서 * .sh 와일드 카드를 사용하여 일부 파일을 복원합니다. 세 번 맞았습니다. 더 있어야한다는 것을 알고 전체 이름을 입력했습니다. 예를 들면 다음과 같습니다. goFindRanges.sh. 추가 파일을 복원 할 수있었습니다. 와일드 카드가 어떻게 엉망이 되었습니까?

내 .tgz 아카이브는 하드 디스크에 있습니다. 광학 매체가 아닙니다. 우분투 10.10에서 bash를 사용합니다.

b@maui:~$ tar xvpfz backup2011Sep06T0000.tgz ./javawork/Trader1/*.sh
./javawork/Trader1/goReloadOp.sh
./javawork/Trader1/goReloadAudit.sh
./javawork/Trader1/goTrade.sh
b@maui:~$ tar xvpfz backup2011Sep06T0000.tgz ./javawork/Trader1/goFindRanges.sh
./javawork/Trader1/goFindRanges.sh

답변:



9

당신이 할 때 :

tar xvpfz backup2011Sep06T0000.tgz ./javawork/Trader1/*.sh

*.sh쉘 확장 (존재 ./javawork/Trader1/*.sh 존재를 가정). 따라서 tar는 다음과 같이 쉘에 의해 실행됩니다.

tar xvpfz backup2011Sep06T0000.tgz ./javawork/Trader1/goReloadOp.sh ./javawork/Trader1/goReloadAudit.sh ./javawork/Trader1/goTrade.sh

와일드 카드를 tar에 전달하려면 "그 파일 만 추출하십시오"라고 말하려면 작은 따옴표로 묶고 --wildcards옵션을 추가해야합니다 .

tar xvpfz backup2011Sep06T0000.tgz --wildcards './javawork/Trader1/*.sh'

이 답변을 이해하지 못합니다. 와일드 카드 * .sh가 goFindRanges.sh를 추출하지 못했습니다. Joakim Elofsson의 답변이 더 합리적이지만 투표 수가 적으므로 맞지 않습니다.
H2ONaCl

*는 쉘 또는 tar로 해석해야합니다. 쉘은 tar 파일 형식을 이해해야하기 때문에 올바르게 확장 할 수 없습니다. 그래서 당신은 쉘을 말해야한다-그것을 확장하려고하지 말라 (너무 멍청하다)-이것을 *에 tar로 전달하고 tar에 말하라- "hey tar, 아카이브 내용에 따라 widlcards를 확장하십시오".
Michał Šrajer

내 대답은 이것과 동일하지만 해결책이 부족합니다.
Joakim Elofsson

큰 따옴표도 잘 작동하며 작은 따옴표 일 필요는 없습니다.
Daniel Beck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.