trova un file all'interno di un archivio tar.gz


12

È possibile usare il findcomando in modo che cerchi i file all'interno di un archivio tar.gz anche usando i caratteri jolly?

piace

find archive.tar.gz --name *foo*

Risposte:


17

Che ne dici di:

$ tar tf archive.tar.gz | grep foo

non elenca solo tutti i file?
morsetto

@clamp Sì, se vuoi fare qualcosa per ogni file, devi semplicemente reindirizzare l'output a un altro comando.

Grazie! scusa ma sono un novizio in unix. ho provato: tar tf graphics.tar.gz | find . --name *space*ma diceunkown predicate --name
morsetto

Gli findargomenti @clamp richiedono solo un trattino, ma poiché si tratta di un elenco di file su stdin, si desidera utilizzare grepinvece, come il codice di esempio di hesse. Provatar tf graphics.tar.gz | grep 'space'
Kevin

1
grep *foo*non è un'espressione regolare valida. gregnon capisce i globs, capisce le espressioni regolari. Prova grep fooinvece.
Alessio

3

Montare l'archivio come directory. Puoi farlo con il filesystem AVFS , che ti consente di accedere a qualsiasi archivio come directory il cui nome ha un finale #.

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

non funziona per gzip
van abel il

@vanabel Un file gzip non contiene altri file. È solo un file, compresso. Quindi non c'è "dentro" in cui cercare.
SO di Gilles

2

Penso che funzioni senza pipe e grep.

come questo: tar tvf archive.tar.gz "foo"

in questo modo, anche i globs funzioneranno.

tar tvf archive.tar.gz "*.foo"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.