3

В этой последовательности командной строки я использую подстановочный знак * .sh для восстановления некоторых файлов. Я получил три хита. Зная, что их должно быть больше, я набрал полное имя. Например: goFindRanges.sh. Мне удалось восстановить дополнительный файл. Как подстановочный знак мог испортиться?

Мой архив .tgz находится на жестком диске; не оптический носитель. Я использую bash на своей Ubuntu 10.10.

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

2 ответа2

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'
2

Ваш подстановочный знак расширяет то, что уже находится на диске, а не то, что находится внутри архива (tgz).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .