Newsgroup: it.comp.os.linux.iniziare
Titolo: Visualizzare contenuto di un archivio ordinato per mtime

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!

 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.

 Se ne sapete qualcosa...
 
-- 
Yoda
 

 "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!   :)

 Senza sortare
 
Ma nooo! Per pietà!!!   :D :D
Please!
Order!!!
Order!!!

 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 <yo...@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
 


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.
 

 del file:
 
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)

-- 
Yoda