Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Comando per ricerca file [anche] in archivi 7z

474 views
Skip to first unread message

Aladino

unread,
Apr 13, 2021, 3:52:30 PM4/13/21
to
Mi servirebbe riuscire a fare un comando shell (da usare con bash e zsh)
per ricercare dei file in base ad un pattern del nome, dentro una
directory che potrebbe contenere un numero indefinito di sottodirectory,
file di ogni tipo e file archivio (per lo più zip e 7z). Almeno per i
file zip e 7z, la ricerca dovrebbe entrare nell'archivio.
Il comando dovrebbe essere qualcosa del tipo:

arcsearch percorsodipartenza "pettern"

esempio: arcsearch ./ "*.odt" dovrebbe trovare tutti i file con
estensione ".odt" nel percorso attuale

oppure: arcsearch ~/Download "*pippo*" dovrebbe trovare nella cartella
dei download tutti i file con la stringa "pippo" nel nome

Per ricercare i file negli archivi 7z, zip si potrebbe usare:
7za l nomefilearchivio "testoricercato" -r

L'output dovrebbe dirmi il percorso del file archivio dove viene
riscontrato il pattern, e l'elenco dei file che contengono il pattern.
L'ottimale è che mi vengano restituiti anche i nomi di eventuali
directory/file non in archivi che contengono lo stesso pattern nel nome.

Esempo: arcsearch ~/Download "*foo*"

~/Download/foofile.qgs
~/Download/foofolder
~/Download/folder/archivio.7z
Date Time Attr Size Compressed Name
-------------------------------------------------------------------------
2020-05-22 20:35:22 ....A 100914 46710 File info foo.png
2020-05-22 20:34:07 ....A 67134 foo settings.png
-------------------------------------------------------------------------
2020-05-22 20:45:23 167048 46710 2 files

Insomma, per quest'ultima parte mi sta bene l'output del comando 7za, se
poi si riesce ad evitare l'intestazione, meglio. Per gli altri file e
cartelle, oltre al percorso non sarebbe male avere anche la data di
modifica e la dimensione (ma non è indispensabile).
Ah, invece bisognerebbe evitare di ripetere il nome delle directory che
riscontrano il pattern per ogni file e/o cartella contenuta.

--
Per rispondere, togliere -NOSPAM- dall'indirizzo.

Yoda

unread,
Apr 13, 2021, 5:21:10 PM4/13/21
to
Addi' 13 apr 2021 19:52:28, Aladino scrive:

> Mi servirebbe riuscire a fare un comando shell (da usare con bash e zsh)
> per ricercare dei file in base ad un pattern del nome, dentro una
> directory che potrebbe contenere un numero indefinito di sottodirectory,
> file di ogni tipo e file archivio (per lo più zip e 7z). Almeno per i
> file zip e 7z, la ricerca dovrebbe entrare nell'archivio.
> Il comando dovrebbe essere qualcosa del tipo:

> arcsearch percorsodipartenza "pettern"
> esempio: arcsearch ./ "*.odt" dovrebbe trovare tutti i file con
> estensione ".odt" nel percorso attuale

Questa e' una prima cosa, chiamiamola cercafile.

Inoltre dovresti dire se la ricerca e' una tantum (e allora conviene
find), oppure piu' volte (e allora locate e' fulmineo e non si mette
a ravanare ogni volta, perche' legge il suo db che si crea).

> oppure: arcsearch ~/Download "*pippo*" dovrebbe trovare nella cartella
> dei download tutti i file con la stringa "pippo" nel nome

E questa e' una seconda cosa, ben distinta dalla prima, chiamiamola
cercatesto. Il comando sara' grep.

> Per ricercare i file negli archivi 7z, zip si potrebbe usare:
> 7za l nomefilearchivio "testoricercato" -r

Idem come cercatesto, col comando zgrep invece di grep.

Anche per l' "ottimale", che dici poi qui giu', e' tutto possibile,
ma devi dire che distro hai, perche' il comando locate puo'
cambiare anche parecchio.
Io ti potro' aiutare solo se hai la Debian o derivate ciao

> L'output dovrebbe dirmi il percorso del file archivio dove viene
> riscontrato il pattern, e l'elenco dei file che contengono il pattern.
> L'ottimale è che mi vengano restituiti anche i nomi di eventuali
> directory/file non in archivi che contengono lo stesso pattern nel nome.

> Esempo: arcsearch ~/Download "*foo*"

> ~/Download/foofile.qgs
> ~/Download/foofolder
> ~/Download/folder/archivio.7z
> Date Time Attr Size Compressed Name
> -------------------------------------------------------------------------
> 2020-05-22 20:35:22 ....A 100914 46710 File info foo.png
> 2020-05-22 20:34:07 ....A 67134 foo settings.png
> -------------------------------------------------------------------------
> 2020-05-22 20:45:23 167048 46710 2 files

> Insomma, per quest'ultima parte mi sta bene l'output del comando 7za, se
> poi si riesce ad evitare l'intestazione, meglio. Per gli altri file e
> cartelle, oltre al percorso non sarebbe male avere anche la data di
> modifica e la dimensione (ma non è indispensabile).
> Ah, invece bisognerebbe evitare di ripetere il nome delle directory che
> riscontrano il pattern per ogni file e/o cartella contenuta.

--
Yoda

Aladino

unread,
Apr 13, 2021, 6:21:01 PM4/13/21
to
Yoda <yo...@pippo.invalid> wrote:

> > arcsearch percorsodipartenza "pettern"
> > esempio: arcsearch ./ "*.odt" dovrebbe trovare tutti i file con
> > estensione ".odt" nel percorso attuale
>
> Questa e' una prima cosa, chiamiamola cercafile.
>
> Inoltre dovresti dire se la ricerca e' una tantum (e allora conviene
> find), oppure piu' volte (e allora locate e' fulmineo e non si mette
> a ravanare ogni volta, perche' legge il suo db che si crea).

Mi rendo conto dalla tua risposta che non ho formulato bene la
richiesta:

arcsearch ./ "*.odt"

dovrebbe trovare tutti i file con estensione ".odt" nel percorso
attuale, nelle sottocartelle e dentro i file archivio ivi contenuti (.7z
e .zip sopratutto, ma se entra anche in altri archivi meglio... per fare
le cose per fino, si potrebbe anche pensare a dei flag per includere e/o
escludere alcuni tipi di formati archivio).

Comunque, la base della richiesta è cercare file in base al nome dentro
una serie di archivi .7z, senza dover dare a mano il comando:

7za l nomefilearchivio "testoricercato" -r

per ogni singolo archivio.

P.S. arcsearch è il nome che ho dato all'ipotetico comando o alias che
esegua quanto richiesto.

P.P.S. la mia distro è... macOS. Non è linux, ma è pur sempre unix-like.
Purtroppo i software che uso abitualmente non girano su linux. O
Windows, o Mac. Però so che su linux è più facile trovare persone
competenti con bash o altre shell, pertanto ho postato qui (ed è
qualcosa che in linea di massima dovrebbe funzionare anche su linux).

Yoda

unread,
Apr 13, 2021, 7:13:39 PM4/13/21
to
Addi' 13 apr 2021 22:20:59, Aladino scrive:

> P.P.S. la mia distro è... macOS. Non è linux, ma è pur sempre unix-like.
> Purtroppo i software che uso abitualmente non girano su linux. O
> Windows, o Mac. Però so che su linux è più facile trovare persone
> competenti con bash o altre shell, pertanto ho postato qui (ed è
> qualcosa che in linea di massima dovrebbe funzionare anche su linux).

Allora e' semplicissimo, ecco alcune le righe di comando:
grep testo * (cerca in tutti i file della directory attiva)
grep testo /var/pippo/* (tutti i file della directory pippo)
grep -R testo /home (tutti i file di ogni subdir di /home, ad
esempio dato da root "grep -R testo /" cerca in tutto il fs)

Inoltre, per tutte, puoi cercare piu' nomi. Ecco come:
grep -e testo1 -e testo2 -e "testo3 con spazio" *
grep -e testo1 -e testo2 -e "testo3 con spazio" /var/pippo
grep -R -e testo1 -e testo2 -e "testo3 con spazio" /home

Puoi averlo anche in tecnicolor con "--color", ma se leggi la
manpagina (in rete, se per il mac non c'e') vedi moltissime
opzioni per la ricerca e per l'output ciao

(esempio "-d skip" non va nelle subdir, -h non mette il nome del
file, -o mette solo il pattern che cerchi, -i senza case sensitive,
-w la parola esatta.. sto andando a memoria)

Con zgrep e' tutto lo stesso, ma legge nei file compressi ariciao e
fammi sapere come va col mac

--
Yoda

Yoda

unread,
Apr 13, 2021, 7:19:10 PM4/13/21
to
Addi' 13 apr 2021 23:13:38, Yoda scrive:

> grep testo * (cerca in tutti i file della directory attiva)

Dimenticavo: "grep testo *.html" o cose simili, per cercare solo
dentro i file con quell'estensione.

--
bye, Yoda

Aladino

unread,
Apr 14, 2021, 2:00:52 AM4/14/21
to
Yoda <yo...@pippo.invalid> wrote:

> Allora e' semplicissimo, ecco alcune le righe di comando:
> grep testo * (cerca in tutti i file della directory attiva)
> grep testo /var/pippo/* (tutti i file della directory pippo)
> grep -R testo /home (tutti i file di ogni subdir di /home, ad
> esempio dato da root "grep -R testo /" cerca in tutto il fs)
OK. Ma il problema principale è cercare i file dentro archivi in formato
.7z
Il fatto è che da anni comprimo e archivio i lavori finiti in file .7z.
Tra l'altro l'archivio è distribuito in modo non omogeneo, nel senso che
per i clienti che ho fatto un solo lavoro mi trovo un unico file .7z che
ho nominato con un numero di archivio ed il nome del cliente. Per i
clienti che hanno più lavori, ho una cartella con il nome del cliente e
dentro più file .7z, ognuno nominato con un numero di archivio e una
breve descrizione del lavoro.
Ieri mi serviva un documento di cui posso immaginare parte del nome, ma
non ricordo in che pratica l'ho fatto. Per il momento ho risolto in
altro modo, ma mi è restata la sensazione che un comando che permetta di
ricercare i file dentro gli archivi .7z (senza aprirli uno ad uno)
potrebbe tornarmi utile anche in futuro. Poi se lo stesso comando mi
entra anche in altri tipi di archivio (.zip, .tar, .tgz, ecc...) ed
elenca anche file e cartelle che contengono il pattern ricercato...
potrebbe essere ancora più utile, ma la base del problema è ricercare
ricorsivametne il pattern nei nomi dei file contenuti in archivi .7z

Yoda

unread,
Apr 14, 2021, 3:34:00 AM4/14/21
to
Addi' 14 apr 2021 06:00:45, Aladino scrive:
> Yoda <yo...@pippo.invalid> wrote:

>> Allora e' semplicissimo, ecco alcune le righe di comando:
>> grep testo * (cerca in tutti i file della directory attiva)
>> grep testo /var/pippo/* (tutti i file della directory pippo)
>> grep -R testo /home (tutti i file di ogni subdir di /home, ad
>> esempio dato da root "grep -R testo /" cerca in tutto il fs)

> OK. Ma il problema principale è cercare i file dentro archivi in formato
> .7z
-snip-

> Per i
> clienti che hanno più lavori, ho una cartella con il nome del cliente e
> dentro più file .7z, ognuno nominato con un numero di archivio e una
> breve descrizione del lavoro.

Allora se hai clienti e ci lavori non sei un novellino, ti conviene
cercare la manpagina in rete di grep e di zgrep.
Ti aggiungo che dovrebbero fare esattamnte quello che cerchi e che
ti serve, zgrep praticamente ha la stessa sintassi di grep.
Tieni presente questa riga:
grep -R -e pattern1 -e pattern2 /home/*/*/*.zip /var/pippo/*clienti*

che vale anche per zgrep ciao

--
Yoda

Aladino

unread,
Apr 14, 2021, 6:32:42 AM4/14/21
to
Yoda <yo...@pippo.invalid> wrote:

> Allora se hai clienti e ci lavori non sei un novellino, ti conviene
> cercare la manpagina in rete di grep e di zgrep.

Lavoro, ma non in campo informatico. Diciamo che lì mi ci arrangio,
anche perché è un interesse che porto avanti da quando ho lasciato
l'università (ex. facoltà di scienze dell'informazione).

P.S. Sicuro che zgrep entri negli archivi .7z?
--
Per contattarmi, togliere -NOSPAM- dall'indirizzo.
To contact me, remove -NOSPAM- from address.

Piergiorgio Sartor

unread,
Apr 14, 2021, 11:29:25 AM4/14/21
to
On 14/04/2021 08.00, Aladino wrote:
[...]
> OK. Ma il problema principale è cercare i file dentro archivi in formato
> .7z

Io ti lancio una possibile soluzione
avventurosa...

Esiste (esistono?) dei moduli fuse
che montano i file 7z in qualche
mount point.

Una volta montati, si possono usare
i vari tool come "find".

Quindi uno potrebbe cercare prima
tutti i file 7z, montarli in qualche
posto "temporaneo" e poi fare un
"find" dappertutto...

bye,

--

piergiorgio

Yoda

unread,
Apr 14, 2021, 12:25:07 PM4/14/21
to
Addi' 14 apr 2021 10:32:38, Aladino scrive:

> P.S. Sicuro che zgrep entri negli archivi .7z?

Questo non lo so, non uso 7z, prova, che tanto zgrep non puo' farti
assolutamente nessun danno ciao

--
Yoda

Aladino

unread,
Apr 15, 2021, 1:27:48 AM4/15/21
to
Yoda <yo...@pippo.invalid> wrote:

> Questo non lo so, non uso 7z, prova, che tanto zgrep non puo' farti
> assolutamente nessun danno ciao

A me risulta che non "entri" nei file 7z

L'unico comando che conosco in grado di reicercare dei file in archivi
file.7z è per l'appunto 7z (o 7za)

7za l "nomefilearchivio" "testoricercato" -r

funziona per ricercare il "testoricercato" nel file nomefilearchivio

Dovrei trovare come usarlo ricorsivamente sugli archivi presenti in una
directory e relative sottodirectory. E se nella ricerca degi archivi
venisse riscontrato il "testoricercato" in file o cartelle non parte di
archivi 7z, mi starebbe bene che venissero comunque segnalati.

Enrico Bianchi

unread,
Apr 16, 2021, 8:33:46 AM4/16/21
to
On 2021-04-13, Aladino <borgob...@SPAM-alice.it> wrote:

> arcsearch percorsodipartenza "pettern"

Installa MetaTracker e poi usalo da linea di comando. Ti passo dei riferimenti
per Ubuntu, dovrebbero valere ancora e dovrebbero essere abbastanza neutrali
rispetto alla distribuzione (al massimo cambia il nome del pacchetto):

https://help.ubuntu.com/community/MetaTracker

Enrico

Aladino

unread,
Apr 16, 2021, 1:53:32 PM4/16/21
to
Enrico Bianchi <enrico....@ymail.com> wrote:

> https://help.ubuntu.com/community/MetaTracker
Sicuro che "entri" negli archvi .7z? Non ho visto niente in merito.

Yoda

unread,
Apr 16, 2021, 2:50:41 PM4/16/21
to
Addi' 15 apr 2021 04:59:05, Aladino scrive:
Dunque dunque.. vediamo se puo' servirti questo:
A) Dovresti vedere tu (io divrei installarlo eccetera) se il comando
7za prende i caratteri jolly. Cioe' cosa fa se gli dai:
7za l ./* "testoricercato" -r
siccome prevede il "-r", penso di si' e in questo caso sei a posto.
N.B. prova anche con:
7za l * "testoricercato" -r
7za l pippo/* "testoricercato" -r
7za l /home/pippo/* "testoricercato" -r
(sei sicuro che il "-r" non lo voglia in prima posizione, come tutte
le opzioni UNIX, cioe' prima del comando "l"?)

B) Se non va l'A, allora dillo che ti do il ciclo for per creare
l'elenco dei nomi-file da dare in pasto a 7za (si fa con find) ciao

--
Yoda

Aladino

unread,
Apr 17, 2021, 1:51:41 AM4/17/21
to
Yoda <yo...@pippo.invalid> wrote:

> 7za l /home/pippo/* "testoricercato" -r
> (sei sicuro che il "-r" non lo voglia in prima posizione, come tutte
> le opzioni UNIX, cioe' prima del comando "l"?)
Il -r serve per rendere il comando ricorsivao all'interno del file
archivio (dove possono esserci cartelle e sottocartelle). Funziona sia
alla fine che dopo la lettera "l" (che sta per list)

> B) Se non va l'A, allora dillo che ti do il ciclo for per creare
> l'elenco dei nomi-file da dare in pasto a 7za (si fa con find) ciao
Grazie, è quello che in qualche modo sto cercando di fare: avere un
elenco di file e cartelle, e riuscire a passarle al comando 7za, visto
che per il nome dell'archivio non sono ammessi caratteri jolly. Inoltre
se a 7za (con la funzione list) vengono passati file non di archivi
supportati, restituisce (ovviamente) un errore. Pertanto bisognerebbe
riuscire a passargli solo i file con estensioni .7z e .zip (a me bastano
questi, ma volendo ce ne sono parecchi altri; per un elenco completo si
veda https://www.7-zip.org).
Diciamo che poi sarebbe utile che il comando batch controlli la presenza
del "testocercato" anche nel nome dei file elencati (non solo dentro i
file archivio).

Aladino

unread,
Apr 17, 2021, 3:40:56 AM4/17/21
to
Aladino <borgob...@SPAM-alice.it> wrote:

> per il nome dell'archivio non sono ammessi caratteri jolly.
A dire il vero non č proprio cosě. Usando un carattere jolly, il comando
prende il primo file che corrisponde ed esegue il comando: se trova un
file che non č un archivio supportato esce con errore, se trova un
archivio supportato fa l'lelenco dei file che contengono il
testoricercato, ma comunque esce dopo aver elaborato la richiesta sul
primo archivio. Diciamo che nel comando bash bisognerebbe evitare di
passare al comando 7z file non supportati, perché si rischia di avere
una serie infinita di messaggi di errore tra cui si rischia di non
vedere eventuali risposte positive. Pertanto o si inserisce nel comando
gli archvi in cui ricercare il testo, o si passano con un flag.

arcsearch -at ".7z .zip .tar .gzip .rar" <percorsodipartenza>
<testoricercato>

oppure

arcsearch <percorsodipartenza> <testoricercato> .7z .zip .rar .gzip .rar

Il mio interesse lavorativo sarebbe solo per la ricerca in archivi .7z,
tutto il resto č... didattica.

Yoda

unread,
Apr 17, 2021, 9:09:04 AM4/17/21
to
Addi' 17 apr 2021 07:40:53, Aladino scrive:

> arcsearch <percorsodipartenza> <testoricercato> .7z .zip .rar .gzip .rar

Be' il patool che ti dico appresso ti cercherebbe, volendo, anche
in arcgivi-file con altro formati e non solo 7z.

> Il mio interesse lavorativo sarebbe solo per la ricerca in archivi .7z,
> tutto il resto è... didattica.

Bon.. oggi ho un po' di tempo, ecco una soluzione; con Linux va
perfettamente, per il Mac non so se c'e'.
Ecco l'output della ricerca, fatta con questa riga di comando:

[/tmp]yoda_$: for j in *.7z; do patool search Ballantine $j; done

-cite-
./ala/MyMovie/Peck:è il dottor Edwards, ma un misterioso John Ballantine
che ha perso la
patool: Searching 'Ballantine' in ala.7z ...
patool: running /usr/bin/grep -r -e Ballantine .
patool: with cwd='/tmp/Unpack_6ipqhggx'

./ala/MyMovie/Peck:è il dottor Edwards, ma un misterioso John Ballantine
che ha perso la
patool: Searching 'Ballantine' in prova.7z ...
patool: running /usr/bin/grep -r -e Ballantine .
patool: with cwd='/tmp/Unpack_bh05lujt'
-/cite-

Allora, descrizione.
- in /tmp ho creato due archivi: ala.7z e prova.7z
- ala.7z comprende TUTTO cio' che ho in /tmp, perche' non ero
pratico della riga di comando da dare a 7za
- prova.7z e' perfetto, contiene la sola directory /tmp/ala, nella
quale ci sono due subdir: MyMovie e Wmovie, con dentro file di testo
in entrambe (recensioni su film).
- zgrep grep 7za NON possono trovare testo archiviato con 7z
- solo 7za puo' leggere l'elenco di cio' che c'e' nell'archivio, ma
NON puo' cercare testo in ogni file contenuto in tale archivio
- appurato questo, ho trovato l'utility patool, da me e' un
pacchetto debian che ho installato al volo in 2 minuti
- esso (patool) tra le altre cose cerca il testo come vuoi tu, e
guarda caso scompatta in memoria e poi usa "grep -r" per trovare
il pattern ciao e fammi sapere se trovi patool per Mac

Ps. Comunque anche patool non accetta i caratteri jolly, devi dargli
il nome del file-archivio dove cercare, percio' ho fatto il ciclo for.

--
Yoda

Aladino

unread,
Apr 19, 2021, 2:23:43 AM4/19/21
to
Yoda <yo...@pippo.invalid> wrote:

/cut
Ho dato un occhiata veloce, e cercherò di approfondire. Intanto rispondo
alle tue ultime considerazioni

> - solo 7za puo' leggere l'elenco di cio' che c'e' nell'archivio, ma
> NON puo' cercare testo in ogni file contenuto in tale archivio
OK, a me basterebbe cercare nei nomi dei file. Ovvero ottenere l'elenco
dei file che contengono il pattern nel nome. E questo si può fare con 7z
e/o 7za, ma su un file archivo alla volta, e io avrei bisogno di
applicarlo ricorsivamente a delle directory con tanto di subdirectory...
ma penso che questo ormai sia chiaro.

> - appurato questo, ho trovato l'utility patool, da me e' un
> pacchetto debian che ho installato al volo in 2 minuti
Su Mac purtroppo no. Ho provato sia con Homebrew sia con Macport che
sono gli installatori di pacchetti più usati per installare applicazioni
da riga di comando su macOS. Però mi sembra che si dovrebbe poter
installare ed usare anche pip, ma al momento non ci sono riuscito.
Riproverò.

> - esso (patool) tra le altre cose cerca il testo come vuoi tu, e
> guarda caso scompatta in memoria e poi usa "grep -r" per trovare
> il pattern ciao e fammi sapere se trovi patool per Mac
Se non combino con pip, dovrebbe esserci al possibilità di compilare
patool direttamente sul Mac, ma sono un po' arrugginito anche con quello
e dovrei rivederim i comandi per compilare pacchetti.

Yoda

unread,
Apr 19, 2021, 7:02:47 AM4/19/21
to
Addi' 19 apr 2021 06:23:40, Aladino scrive:
> Yoda <yo...@pippo.invalid> wrote:

> /cut
> Ho dato un occhiata veloce, e cercherò di approfondire. Intanto rispondo
> alle tue ultime considerazioni

>> - solo 7za puo' leggere l'elenco di cio' che c'e' nell'archivio, ma
>> NON puo' cercare testo in ogni file contenuto in tale archivio

> OK, a me basterebbe cercare nei nomi dei file. Ovvero ottenere l'elenco
> dei file che contengono il pattern nel nome. E questo si può fare con 7z
> e/o 7za, ma su un file archivo alla volta, e io avrei bisogno di
> applicarlo ricorsivamente a delle directory con tanto di subdirectory...
> ma penso che questo ormai sia chiaro.

Cercare "Anna" nei nomi dei file e cercare "Anna" dentro i file,
son due cose totalmente distinte.
Il primo caso si risolve facilmente anche nel mac, vediamo come.

1. Creazione del file Lista
find /home /var -name "*.7z" 1>/dove_vuoi/Lista

2. Creazione del file Total
> /altro_dove_vuoi/Total
for j in $(cat Lista); do
7z l $j -slt | sed -n '/^Path/s/Path = //p' >> /altro_dove_vuoi/Total
done
(occhio agli spazi virgolette eccetera, ricopiala ESATTA!)

3. Ricerca dei file che hanno "bogart" o "stallone" nel nome (senza
distinguere le maiuscole)
grep --color -i -e bogart -e stallone /altro_dove_vuoi/Total

Per find in 1 ho messo solo /home /var, puoi mettercene altre o una
sola o nessuna ciao

Postilla. Se ti da' fastidio lo sterr di find, dallo cosi':
find /home /var -name "*.7z" 2>/dev/null 1>/dove_vuoi/Lista

oppure cosa' se poi vuoi vedere cos'ha scritto:
find /home /var -name "*.7z" 2>/tmp/pippo 1>/dove_vuoi/Lista

IMPORTANTE! nota bene che il file Total te lo tieni senza rifarlo
ogni volta (tranne quando tu facessi cambiamenti nei .7z), potresti
anche usarlo in uno script per evitare di dover battere a manina la
riga di comando 3 ogni volta per la ricerca.

>> - appurato questo, ho trovato l'utility patool, da me e' un
>> pacchetto debian che ho installato al volo in 2 minuti

> Su Mac purtroppo no. Ho provato sia con Homebrew sia con Macport che
> sono gli installatori di pacchetti più usati per installare applicazioni
> da riga di comando su macOS. Però mi sembra che si dovrebbe poter
> installare ed usare anche pip, ma al momento non ci sono riuscito.
> Riproverò.

Uhm.. rinunziaci, perche' patool usa 7z zip arj eccetera.. dovresti
averceli tutti penso ariciao

--
Yoda

Aladino

unread,
Apr 19, 2021, 7:32:03 AM4/19/21
to
Yoda <yo...@pippo.invalid> wrote:

> Per find in 1 ho messo solo /home /var, puoi mettercene altre o una
> sola o nessuna ciao
Premetto che devo ancora capire e sperimentare... ma elencare le
directory una alla volta potrebbe essere un problema, se il comando non
entra nelle sottodirectory.

Comunque grazie delle dritte.

Yoda

unread,
Apr 19, 2021, 8:29:26 AM4/19/21
to
Addi' 19 apr 2021 11:31:59, Aladino scrive:
> Yoda <yo...@pippo.invalid> wrote:

>> Per find in 1 ho messo solo /home /var, puoi mettercene altre o una
>> sola o nessuna ciao

> Premetto che devo ancora capire e sperimentare... ma elencare le
> directory una alla volta potrebbe essere un problema, se il comando non
> entra nelle sottodirectory.

Non conosci find! per dire, se dai "find / -name "*.7z" ti cerca
addirittura in TUTTO il fs! guarda limitandomi a /usr:

[~]_yoda_$: find /usr -name "*.sl"
/usr/share/mc/hints/mc.hint.sl
/usr/share/doc/slrn/examples/score.sl
/usr/share/slrn/slang/mailcap.sl
/usr/share/slrn/slang/gsort.sl
/usr/share/slrn/slang/slrn.sl
/usr/share/slrn/slang/ttyprint.sl
/usr/share/slrn/slang/search.sl
/usr/share/slrn/slang/varset.sl
/usr/share/slrn/slang/latin2.sl
/usr/share/slrn/slang/tin-art.sl
/usr/share/slrn/slang/posthook.sl
/usr/share/slrn/slang/ispell.sl
/usr/share/slrn/slang/util.sl
/usr/share/slrn/slang/tin-group.sl
/usr/share/slrn/slang/mime.sl
/usr/share/slrn/slang/multipart.sl
/usr/share/slrn/slang/color.sl
/usr/share/slrn/slang/xcomment.sl
/usr/share/slrn/slang/nn.sl

--
Yoda

Aladino

unread,
Apr 19, 2021, 10:12:23 AM4/19/21
to
Yoda <yo...@pippo.invalid> wrote:

> Non conosci find! per dire, se dai "find / -name "*.7z" ti cerca
> addirittura in TUTTO il fs! guarda limitandomi a /usr:
Conosco find... e sì, ho fatto una domanda idiota. Ma mi ero focalizzato
sul tuo commento. Comunque:
step 1, OK: ho prodotto il file Lista.txt con dentro l'elenco degli
archivi .7z.
step 2... ho prodotto un file Total.txt con dentro le altre 3 righe del
comando. Ho provato a dare l'intero comando su 1 riga, con o senza ">
/altro_dove_vuoi/Total", e poi dandolo riga per riga (il che ha prodotto
il file Total.txt di cui sopra). Ci ragiono su ancora stasera... ma
sicuro che funzioni? Già ci mastico poco, se per caso c'è qualche errore
non ne esco... vedi:
<https://www.dropbox.com/s/438mfg4geo48hhz/Schermata%202021-04-19%20alle%2016.05.48.png?dl=0>

Yoda

unread,
Apr 19, 2021, 2:09:19 PM4/19/21
to
Addi' 19 apr 2021 14:12:18, Aladino scrive:
> Yoda <yo...@pippo.invalid> wrote:

>> Non conosci find! per dire, se dai "find / -name "*.7z" ti cerca
>> addirittura in TUTTO il fs! guarda limitandomi a /usr:

> Conosco find... e sì, ho fatto una domanda idiota. Ma mi ero focalizzato
> sul tuo commento. Comunque:
> step 1, OK: ho prodotto il file Lista.txt con dentro l'elenco degli
> archivi .7z.
> step 2... ho prodotto un file Total.txt con dentro le altre 3 righe del
> comando. Ho provato a dare l'intero comando su 1 riga, con o senza ">
> /altro_dove_vuoi/Total", e poi dandolo riga per riga (il che ha prodotto
> il file Total.txt di cui sopra). Ci ragiono su ancora stasera... ma
> sicuro che funzioni? Già ci mastico poco, se per caso c'è qualche errore
> non ne esco... vedi:
> <https://www.dropbox.com/s/438mfg4geo48hhz/Schermata%202021-04-1
>9%20alle%2016.05.48.png?dl=0>

a) Se le "tre righe" che dici le dai a manina, invece che fare un file
eseguibile, devi darle mettendo punto e virgola invece di andare a capo,
esempio: > Total.txt; for j in $(cat Lista.txt); do 7z eccetera

b) Puoi fare la prova se da te vanno bene quei comandi. Copia una
directory pippo, che contenga file compressi .7z, in /tmp e dai i
seguenti comandi in successione:
Desktop_% find /tmp -name "*.7z" 1>Listatmp

Desktop_% > Destinazionetmp
(questo di azzerare la destinazione e' del tutto inutile se il file
non esiste ancora, s'usa farlo quando poi "appendi" l'output)

Desktop_% for j in $(cat Listatmp); do 7z l $j -slt
| sed -n '/^Path/s/Path = //p' >> Destinazionetmp; done
(quest'ultimo comando tutto senza andare a capo, qui l'ho dovuto
fare perche' Slrn protesta se invio testo oltre le 80 colonne)

E adesso vedi cosa tutto t'ha fatto, di pericoli non ce ne sono, al
piu' ti spaventi che find ti dice che non ha i permessi per entrare
nelle varie subdir di /tmp, a meno che tu non lo faccia come root,
o amministratore come mi sembra che lo chiami il mac ciao
(o a meno che tu non gli dica di buttare lo standard error in un
file di log invece che a video: 2>/tmp/paperino, come t'avevo gia'
scritto)

c) La ricerca la puoi fare greppando Destinazionetmp che t'ha creato
in Desktop/ ariciao

--
Yoda

0 new messages