quando si scrive:
tar -xf *.gz
il comando tar
vede (per esempio):
tar -xf abc.tar.gz def.tar.gz ghi.tar.gz
Questo viene interpretato come una richiesta di estrarre def.tar.gz
e ghi.tar.gz
dall'archivio abc.tar.gz
. Poiché i file non sono lì, ottieni il messaggio di avviso.
In altre parole, tar
funziona su un singolo file tar
(eventualmente compresso) alla volta (in una chiamata). Non funziona su più file tar.
Nota che se abc.tar.gz
contiene un file pqr/xyz/important.c
, è possibile estrarre solo quello file specificando:
tar -xf abc.tar.gz pqr/xyz/important.c
La notazione è stato utilizzato è solo una variante di questa notazione.
(E sì, ci possono essere ragioni per tar
un file tar
. Ad esempio, Gmail non consente di spedire un file tar o un file tar compresso con gzip che contiene un file che è eseguibile. Tuttavia, se si incorpora un file tar compresso in un file tar non compresso, non cerca all'interno del file interno per trovare il file eseguibile. Lo uso quando ho bisogno di spedire un file tar con uno script eseguibile configure
.)
fonte
2013-06-05 06:57:30
è causato dal fatto che la sintassi argomento tar accetta solo un singolo tar nella riga di comando e il resto viene interpretato come qualcos'altro. Potresti usare anche xargs ('ls * .gz | xargs -n1 tar -xzf' o simili). – ShinTakezou
tar non accetta pattern glob come argomento (cioè non lo interpreterà) afaik – ShinTakezou
@ShinTakezou: ma la shell espanderà la notazione '* .gz'; 'tar' non (di solito) vedrà il' * .gz'. A volte, vuoi estrarre i file con '*' nel nome. Ad esempio: 'tar -xf abc.tar.gz 'src/prog/* nome. *'' Estrarrebbe file come 'src/prog/bigname.c',' src/prog/smallname.h'; le virgolette singole impediscono alla shell di espandere '*' e 'tar' la espande. –