Discussione:
Visualizzare contenuto di un archivio ordinato per mtime
Aggiungi Risposta
Joe
2021-09-16 10:02:10 UTC
Rispondi
Permalink
Ho creato un tarball per comprimere e backuppare una dir:

tar -hcvzf pippo-dir.tar.gz pippo-dir

In realtà pippo-dir sarebbe un link simbolico ad una cartella che
risiede in un altro disco, ma va be', ignorate la cosa visto che
non è rilevante... Per gestirla basta il flag "-h" che la tratta
come se fosse una vera cartella sul filesystem locale.

Bene quelol che mi interessa ora è vedere il contenuto del tarball:

tar tvf pippo-dir.tar.gz

mi direte voi...
Vero, e funziona ovviamente.

Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi, con in cima, o anche
in fondo va bene, gli ultimi files che ho modificato.

Una soluzione potrebbe essere scopattare il tarball e poi dare il
solito:

ls -lt

Ma se invece non volessi scompattare il tarball?
Credo che per farlo ci dovrebbe per forza essere una funzionalità
apposita interna al comando "tar".
A meno di non menarsela con un ordinamento in due tempi che però
potrebbe complicare le cose non poco, e a quel punto forse conviene
scompattare e via di ls -lt.

Se ne sapete qualcosa...
Grazie in anticipo!
Mario M. Macaluso
2021-09-17 04:57:59 UTC
Rispondi
Permalink
Post by Joe
tar -hcvzf pippo-dir.tar.gz pippo-dir
[...]
Post by Joe
tar tvf pippo-dir.tar.gz
mi direte voi...
Vero, e funziona ovviamente.
ni:

tar tvzf pippo-dir.tar.gz | tee pippo-dir.lst
(hai compresso l'archivio nel crearlo, devi decomprimerlo anche solo per vederne il contenuto)
lo metti in pipe con tee così ti salvi la lista che potrai consultare in qualsiasi momento.

piccolo hint:

tar cvzf <archivio>-$(date +%F-%H%M%S).tgz ....
Post by Joe
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi, con in cima, o anche
in fondo va bene, gli ultimi files che ho modificato.
Una soluzione potrebbe essere scopattare il tarball e poi dare il
ls -lt
[...]

no, No, NO, non ha senso fare una cosa del genere.

a) hai creato l'archivio
b) hai fatto subito una lista del contenuto

quello che ti serve è conoscere il funzionamento del comando "sort"

man sort

basta che scrivi la seguente chiave di ricerca nel tuo motere di ricerca preferito

"linux sort by field example"

e tutti i dubbi che sorgono dalla lettura della man page vengono risolti.
Joe
2021-09-17 09:13:47 UTC
Rispondi
Permalink
Post by Mario M. Macaluso
Post by Joe
tar -hcvzf pippo-dir.tar.gz pippo-dir
[...]
Post by Joe
tar tvf pippo-dir.tar.gz
mi direte voi...
Vero, e funziona ovviamente.
tar tvzf pippo-dir.tar.gz | tee pippo-dir.lst
(hai compresso l'archivio nel crearlo, devi decomprimerlo anche solo per vederne il contenuto)
lo metti in pipe con tee così ti salvi la lista che potrai consultare in qualsiasi momento.
Già da tanti anni la versione GNU di tar consente la decompressione,
o la lettura del contenuto, riconoscendo automaticamente il formato
compresso e provvedendo automaticamente alla decompressione.

La "z" si può ommettere per queste operazioni sopracitate.
Invece serve per creare l'archivio in forma compressa (cvzf), ma anche
lì se aggiungi il flag -a (auto-compress) puoi lasciare che tar filtri
l'archivio col compressore scelto in base all'estensione del file:

tar cvaf archivio.tar.bz2 pippo-dir

Questo ti crea già l'archivio compresso in formato bzip2, senza
dover specificare il flag di "j" relativo a quel compressore.

https://www.gnu.org/software/tar/manual/tar.html#gzip


Ci sono altre versioni di tar in giro oltre alla GNU, tipo le
bdstar, in quel caso non ti so dire...
Post by Mario M. Macaluso
Post by Joe
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi, con in cima, o anche
in fondo va bene, gli ultimi files che ho modificato.
a) hai creato l'archivio
b) hai fatto subito una lista del contenuto
Sì, in raltà l'ha fatta tar... magari c'è anche il modo per crearla
ordinata in base all'mtime già in fase di creazione.
A parte che non saprei però se si possa fare e come (non ho cercato
in merito), ma resta il problema che... metti di non aver creato tu
il tarball... sarebbe bello gestire l'ordinamento a posteriori
indipendentemente dalla modalità di creazione.
Post by Mario M. Macaluso
basta che scrivi la seguente chiave di ricerca nel tuo motere di ricerca preferito
"linux sort by field example"
Grande! Risposta esatta!

nella fattispecie funziona:

tar -tvf pippo-dir.tar.gz | sort -k4

Oppure:

tar -tvf pippo-dir.tar.gz | sort -rk4

per invrtire l'ordine.

Ottimo!
Lo avevo anche già usato in qualche vecchio script, ma non lo ricordavo.

Grazie mille! :)
Yoda
2021-09-17 06:20:27 UTC
Rispondi
Permalink
Addi' 16 set 2021 10:02:10, Joe scrive:

-snip-
Post by Joe
tar tvf pippo-dir.tar.gz
mi direte voi...
Vero, e funziona ovviamente.
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi, con in cima, o anche
in fondo va bene, gli ultimi files che ho modificato.
Una soluzione potrebbe essere scopattare il tarball e poi dare il
ls -lt
Ma se invece non volessi scompattare il tarball?
Ho seguito anche il reply di Mario, pero' non vi capisco e
certamente e' a me che mi sfugge qualcosa.. va' be', non credo di
poterti essere d'aiuto, ma me lo diresti cos'ha che non va questo:

tar -tvf sudoku.tgz | head -n6 | sort -b -k4 -k5 -k1
-rw-r--r-- zzzz/zzzz 482 2002-08-09 16:39 4.archivio/src/Makefile
-rw-r--r-- yoda/users 26467 2003-07-09 17:11 2.archivio/src/archivio.cc
-rwxr-xr-x root/root 375467 2003-08-06 12:03 3.archivio/src/translate
-rw-r--r-- aaaa/bbbb 0 2003-08-07 10:16 6.archivio/src/mysql.cc
-rw-r--r-- root/root 9428 2003-08-08 16:59 5.archivio/src/outps.cc
drwxr-xr-x yoda/users 0 2003-08-20 15:58 1.archivio/src/

Senza sortare e' cosi' (li ho numerati apposta) ciao

tar -tvf sudoku.tgz | head -n6
drwxr-xr-x yoda/users 0 2003-08-20 15:58 1.archivio/src/
-rw-r--r-- yoda/users 26467 2003-07-09 17:11 2.archivio/src/archivio.cc
-rwxr-xr-x root/root 375467 2003-08-06 12:03 3.archivio/src/translate
-rw-r--r-- zzzz/zzzz 482 2002-08-09 16:39 4.archivio/src/Makefile
-rw-r--r-- root/root 9428 2003-08-08 16:59 5.archivio/src/outps.cc
-rw-r--r-- aaaa/bbbb 0 2003-08-07 10:16 6.archivio/src/mysql.cc
Post by Joe
Credo che per farlo ci dovrebbe per forza essere una funzionalità
apposita interna al comando "tar".
A meno di non menarsela con un ordinamento in due tempi che però
potrebbe complicare le cose non poco, e a quel punto forse conviene
scompattare e via di ls -lt.
Se ne sapete qualcosa...
--
Yoda
Joe
2021-09-17 09:23:37 UTC
Rispondi
Permalink
Post by Yoda
Post by Joe
tar tvf pippo-dir.tar.gz
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi
Ho seguito anche il reply di Mario, pero' non vi capisco e
certamente e' a me che mi sfugge qualcosa.. va' be', non credo di
tar -tvf sudoku.tgz | head -n6 | sort -b -k4 -k5 -k1
-rw-r--r-- zzzz/zzzz 482 2002-08-09 16:39 4.archivio/src/Makefile
-rw-r--r-- yoda/users 26467 2003-07-09 17:11 2.archivio/src/archivio.cc
-rwxr-xr-x root/root 375467 2003-08-06 12:03 3.archivio/src/translate
-rw-r--r-- aaaa/bbbb 0 2003-08-07 10:16 6.archivio/src/mysql.cc
-rw-r--r-- root/root 9428 2003-08-08 16:59 5.archivio/src/outps.cc
drwxr-xr-x yoda/users 0 2003-08-20 15:58 1.archivio/src/
Ho risposto già a Mario.
Perché non capisci? Ha suggerito la ricerca giusta da fare,
e sono giunto alla tua conclusione... Anzi, quasi...

Perché hai messo anche i flag -k5 e -k1 ?
Tanto comanda il primo no? cioè -k4...

Ora è a me che sfugge qualcosa! :D
Post by Yoda
Senza sortare
Ma nooo! Per pietà!!! :D :D
Please!
Order!!!
Order!!!
Yoda
2021-09-17 11:25:34 UTC
Rispondi
Permalink
Post by Joe
Post by Yoda
Post by Joe
tar tvf pippo-dir.tar.gz
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi
Ho seguito anche il reply di Mario, pero' non vi capisco e
certamente e' a me che mi sfugge qualcosa.. va' be', non credo di
tar -tvf sudoku.tgz | head -n6 | sort -b -k4 -k5 -k1
-rw-r--r-- zzzz/zzzz 482 2002-08-09 16:39 4.archivio/src/Makefile
-rw-r--r-- yoda/users 26467 2003-07-09 17:11 2.archivio/src/archivio.cc
-rwxr-xr-x root/root 375467 2003-08-06 12:03 3.archivio/src/translate
-rw-r--r-- aaaa/bbbb 0 2003-08-07 10:16 6.archivio/src/mysql.cc
-rw-r--r-- root/root 9428 2003-08-08 16:59 5.archivio/src/outps.cc
drwxr-xr-x yoda/users 0 2003-08-20 15:58 1.archivio/src/
Ho risposto già a Mario.
Perché non capisci? Ha suggerito la ricerca giusta da fare,
e sono giunto alla tua conclusione... Anzi, quasi...
Perché hai messo anche i flag -k5 e -k1 ?
Tanto comanda il primo no? cioè -k4...
Perche' male non fanno, come anche il -b, oramai ce l'ho per
abitudine. Il -k5 l'ho messo perche' certe volte sort da' la
precedenza alle lettere rispetto alle cifre.

Il -k1 puo' invece essere essenziale: se per caso tu dovessi
metterci il -u (righe uguali), vedresti che senza il -k1 ti taglia
via tutte le righe che differiscono solo nei campi 1..3.

Tutto questo dei vari -k e -b lo vedi chiarissimo se il sort lo dai
per prova con l'opzione --debug ciao

T'aggiungo un copincollo d'anni fa quando sort mi tagliava via
proprio delle date se non ci mettevo il -k1 ariciao
(la seconda riga differisce dalla prima solo per la data)

-cite-
From: Yoda <***@pippo.invalid>
Newsgroups: it.comp.os.linux.iniziare
Subject: Re: Comportamento di sort inaspettato
Date: Mon, 27 May 2019 15:36:54 -0000 (UTC)

Addi' 27 mag 2019 14:25:53, Yoda scrive:

Ci sono arrivato finalmente: per le opzioni -k bisogna ripetere ogni
volta il "-k" (con --debug lo si vede chiaro).
Ecco la riga di comando:

$: sort -k2 -k1 -u pippo
05-15 c09 19650/1046528 files (6.9% non-contiguous)
05-27 c09 19650/1046528 files (6.9% non-contiguous)
05-18 c12 591/9379840 files (21.5% non-contiguous)
05-13 c13 111/16711680 files (4.5% non-contiguous)
05-14 c14 451753/10534912 files (1.3% non-contiguous)
-/cite-
--
Yoda
Joe
2021-09-17 13:36:38 UTC
Rispondi
Permalink
Post by Yoda
Post by Joe
Post by Yoda
Post by Joe
tar tvf pippo-dir.tar.gz
Però, e qui sta la domanda, vorrei vedere la lista dei file ordinata
in base al tempo di ultima modifica degli stessi
Ho seguito anche il reply di Mario, pero' non vi capisco e
certamente e' a me che mi sfugge qualcosa.. va' be', non credo di
tar -tvf sudoku.tgz | head -n6 | sort -b -k4 -k5 -k1
-rw-r--r-- zzzz/zzzz 482 2002-08-09 16:39 4.archivio/src/Makefile
-rw-r--r-- yoda/users 26467 2003-07-09 17:11 2.archivio/src/archivio.cc
-rwxr-xr-x root/root 375467 2003-08-06 12:03 3.archivio/src/translate
-rw-r--r-- aaaa/bbbb 0 2003-08-07 10:16 6.archivio/src/mysql.cc
-rw-r--r-- root/root 9428 2003-08-08 16:59 5.archivio/src/outps.cc
drwxr-xr-x yoda/users 0 2003-08-20 15:58 1.archivio/src/
Ho risposto già a Mario.
Perché non capisci? Ha suggerito la ricerca giusta da fare,
e sono giunto alla tua conclusione... Anzi, quasi...
Perché hai messo anche i flag -k5 e -k1 ?
Tanto comanda il primo no? cioè -k4...
Perche' male non fanno, come anche il -b, oramai ce l'ho per
abitudine. Il -k5 l'ho messo perche' certe volte sort da' la
precedenza alle lettere rispetto alle cifre.
Il -k1 puo' invece essere essenziale: se per caso tu dovessi
metterci il -u (righe uguali), vedresti che senza il -k1 ti taglia
via tutte le righe che differiscono solo nei campi 1..3.
Tutto questo dei vari -k e -b lo vedi chiarissimo se il sort lo dai
per prova con l'opzione --debug ciao
T'aggiungo un copincollo d'anni fa quando sort mi tagliava via
proprio delle date se non ci mettevo il -k1 ariciao
(la seconda riga differisce dalla prima solo per la data)
-cite-
Newsgroups: it.comp.os.linux.iniziare
Subject: Re: Comportamento di sort inaspettato
Date: Mon, 27 May 2019 15:36:54 -0000 (UTC)
Ci sono arrivato finalmente: per le opzioni -k bisogna ripetere ogni
volta il "-k" (con --debug lo si vede chiaro).
$: sort -k2 -k1 -u pippo
05-15 c09 19650/1046528 files (6.9% non-contiguous)
05-27 c09 19650/1046528 files (6.9% non-contiguous)
05-18 c12 591/9379840 files (21.5% non-contiguous)
05-13 c13 111/16711680 files (4.5% non-contiguous)
05-14 c14 451753/10534912 files (1.3% non-contiguous)
-/cite-
Non ho ben capito sinceramente, ma probabilmente perché per
quellp che era il mio scopo non sembra servire tutta quella
roba.
Il -k4 mi piazza i files contenuti nel tarball mostrati in
ordine di mtime, e il fondo mi ritrovo i più recenti.
Ho notato che in una dir ci sono 4 o 5 files aventi uguale data,
quindi uguale "colonna 4".
Inoltre hanno anche la stessa "colonn 5", quella con l'orario
ore:minuti dell'ultima modifica, forse perché quei files lì erano
stati copiati lì tutti insieme e mai riaperti per modifiche.
Fatto sta che mi ordina quei file per nome.
Come se il -k4 significasse: parti ad ordinare dalla colonna
4, ma se trovi elementi della colonna uguali, prosegui nella
valutazione andando a vedere la quinta colonna... In quel caso
essendo anche gli elementi della quinta colonna tutti uguali,
pare procedere ancora verso destra andando a valutare il nome
del file:

sort -k4
---------------------------------------------------------
-rw-r--r-- utente/users 80573 2021-03-31 08:45 a/b/am
-rw-r--r-- utente/users 671381 2021-03-31 08:45 a/b/bu
-rw-r--r-- utente/users 28576 2021-03-31 08:45 a/b/da
-rw-r--r-- utente/users 32931 2021-03-31 08:45 a/b/et
-rw-r--r-- utente/users 84812 2021-03-31 08:45 a/b/sp
---------------------------------------------------------

Ho tagliato il nome dei files, ma si vede bene che "-k4"
in pratica non ha effetto sulla quarta colonna perché è
tutto uguale, così come la quinta (8:45).
Quello che cambia è il nome dei files, ma cambierebbe anche
la colonna 1 degli attributi, la 2 del proprietario, la
3 della dimensione.
Sort le ignora tutte e 3 e considera la 6 del nome dei file,
mi sembra quello che serviva a me.

Cappa multipli tipo -k4 -k5 -k3 potrebbero anche avere un senso
ad esempio se volessi ordinare i files per data, ma allo stesso
tempo avere i files con la stessa data ordinati ulteriormente
per dimensione. A quello scopo potrebbe anche andar bene un
-k4 -k3 se mi interessa sapere quali sono i files più ingombranti
modificati in ogni singolo giorno... Mettendo i giorni più recenti
in coda.

Però ho provato e non funge: dà lo stesso risultato di -k4...
Per fare un ordinamento multiplo pare invece corretta la sintassi

-k {campo-inizio},{campo-fine}

-k4,4
significa ordina sul campo 4 e fermati lì nell'ordinamento senza
valutare i campi più a destra.

-k4,5 -k3
ordina su campo 4 e fermati nell'ordinamento considerando anche il
campo 5, ovvero l'orario hh:mm, poi riordina le righe con campi 4,5
uguali in base al campo 3, ovvero la dimensione dei file:

sort -r -k4,5 -k3
---------------------------------------------------------
-rw-r--r-- utente/users 671381 2021-03-31 08:45 a/b/bu
-rw-r--r-- utente/users 84812 2021-03-31 08:45 a/b/sp
-rw-r--r-- utente/users 80573 2021-03-31 08:45 a/b/am
-rw-r--r-- utente/users 32931 2021-03-31 08:45 a/b/et
-rw-r--r-- utente/users 28576 2021-03-31 08:45 a/b/da
---------------------------------------------------------

Dettaglio:
mettere -k3 in questo caso sembra coincidente con mettere -k3,3
probabilmente perché il k4 è messo prima e viene ritenuto prioritario,
quindi al "secondo" riordinamento, non viene più considerato quello
che c'è a destra della colonna 3.
Yoda
2021-09-17 18:05:07 UTC
Rispondi
Permalink
Addi' 17 set 2021 13:36:38, Joe scrive:

-snip-
Post by Joe
Il -k4 mi piazza i files contenuti nel tarball mostrati in
ordine di mtime, e il fondo mi ritrovo i più recenti.
Ho notato che in una dir ci sono 4 o 5 files aventi uguale data,
quindi uguale "colonna 4".
Inoltre hanno anche la stessa "colonn 5", quella con l'orario
ore:minuti dell'ultima modifica, forse perché quei files lì erano
stati copiati lì tutti insieme e mai riaperti per modifiche.
Fatto sta che mi ordina quei file per nome.
Come se il -k4 significasse: parti ad ordinare dalla colonna
4, ma se trovi elementi della colonna uguali, prosegui nella
valutazione andando a vedere la quinta colonna... In quel caso
essendo anche gli elementi della quinta colonna tutti uguali,
pare procedere ancora verso destra andando a valutare il nome
Due cose:
1. "dalla colonna 4" solo se c'e' -b, altrimenti dal primo carattere
bianco dopo l'ultimo carattere della colonna 3".

2. prosegui con 5 6 e continua con 1 2 3 a meno che non ci sia -u.
Se c'e' -u taglia via tutte le copie che hanno uguali 4 5 6 (non
importa cos'abbiano in 1 2 3) e nota bene che in questo caso la
colonna 4 deve avere uguali anche i bianchi (spazi e tab) alla sua
sinistra a meno che non ci sia anche il -b.

Sul resto, che dici appresso, c'e' parecchio da lavorarci col fatto
che alla 3 non sembra possibile darle precedenza rispetto alla 6.
Se si mette -n o -g da' precedemza assoluta alla riga 3, ma salta
il campo 4 che evidentemente considera non numerico ciao

(il seguito lo lascio perche' poi con calma me lo sviscero tutto)
Post by Joe
sort -k4
---------------------------------------------------------
-rw-r--r-- utente/users 80573 2021-03-31 08:45 a/b/am
-rw-r--r-- utente/users 671381 2021-03-31 08:45 a/b/bu
-rw-r--r-- utente/users 28576 2021-03-31 08:45 a/b/da
-rw-r--r-- utente/users 32931 2021-03-31 08:45 a/b/et
-rw-r--r-- utente/users 84812 2021-03-31 08:45 a/b/sp
---------------------------------------------------------
Ho tagliato il nome dei files, ma si vede bene che "-k4"
in pratica non ha effetto sulla quarta colonna perché è
tutto uguale, così come la quinta (8:45).
Quello che cambia è il nome dei files, ma cambierebbe anche
la colonna 1 degli attributi, la 2 del proprietario, la
3 della dimensione.
Sort le ignora tutte e 3 e considera la 6 del nome dei file,
mi sembra quello che serviva a me.
Cappa multipli tipo -k4 -k5 -k3 potrebbero anche avere un senso
ad esempio se volessi ordinare i files per data, ma allo stesso
tempo avere i files con la stessa data ordinati ulteriormente
per dimensione. A quello scopo potrebbe anche andar bene un
-k4 -k3 se mi interessa sapere quali sono i files più ingombranti
modificati in ogni singolo giorno... Mettendo i giorni più recenti
in coda.
Però ho provato e non funge: dà lo stesso risultato di -k4...
Per fare un ordinamento multiplo pare invece corretta la sintassi
-k {campo-inizio},{campo-fine}
-k4,4
significa ordina sul campo 4 e fermati lì nell'ordinamento senza
valutare i campi più a destra.
-k4,5 -k3
ordina su campo 4 e fermati nell'ordinamento considerando anche il
campo 5, ovvero l'orario hh:mm, poi riordina le righe con campi 4,5
sort -r -k4,5 -k3
---------------------------------------------------------
-rw-r--r-- utente/users 671381 2021-03-31 08:45 a/b/bu
-rw-r--r-- utente/users 84812 2021-03-31 08:45 a/b/sp
-rw-r--r-- utente/users 80573 2021-03-31 08:45 a/b/am
-rw-r--r-- utente/users 32931 2021-03-31 08:45 a/b/et
-rw-r--r-- utente/users 28576 2021-03-31 08:45 a/b/da
---------------------------------------------------------
mettere -k3 in questo caso sembra coincidente con mettere -k3,3
probabilmente perché il k4 è messo prima e viene ritenuto prioritario,
quindi al "secondo" riordinamento, non viene più considerato quello
che c'è a destra della colonna 3.
--
Yoda
Continua a leggere su narkive:
Loading...