Rispondere, eventualmente facendo prove sul proprio sistema, alle seguenti domande:
- Quali comandi possono essere disponibili per cercare nomi di file sul sistema? Che differenze hanno?
- Qualsi comandi si possono usare per cercare informazione nella documentazione di sistema?
- Come si cercano tutti i file il cui nome finisce per "log" nel filesystem?
- Come si trovano tutti i file modificati nelle ultime 24 ore?
- Come si trovano tutti i file posseduti da un dato utente?
- Come si trovano file che non hanno un owner valido ed esistente sul sistema?
- Come si visualizza il contenuto di tutti i file che matchano un dato criterio di ricerca?
- Come si trovano tutti i file che contengono una data stringa?
- Quali comandi possono essere disponibili per cercare nomi di file sul sistema? Che differenze hanno?
find
- Ricerca file contenuti nella directory indicata in base a svariati criteri, come il nome, la data di modifica, la dimensione ecc. Utile per molti scopi.
locate
- Ricerca file che matchano un pattern specificato tramite un database che permette ricerche veloci e viene aggiornato col comando updatedb
.
whereis
- Visualizza i path di binari, sorgenti e manuali per un comando
which
- Mostra la posizione di comandi eseguibili all'interno del proprio ambiente PATH.
- Qualsi comandi si possono usare per cercare informazione nella documentazione di sistema?
whatis
- Cerca la parola completa specificata all'interno del database whatis, contenente brevi descrizioni dei comandi del sistema. Il database viene creato con il comando makewhatis
apropos
- Come whatis, ma esegue ricerche anche di parole parziali.
Ovviamente per accedere alle man pages o alle info pages si usano, rispettivamente, man
e info
.
- Come si cercano tutti i file il cui nome finisce per "log" nel filesystem?
find / -name "*.log"
si può aggiungere l'opzione -type f per visualizzare solo i file e non le directory:
find / -name "*.log" -type f
- Come si trovano tutti i file modificati nelle ultime 24 ore?
find / -type f -mtime -1
e
find / -type f -ctime -1
sostanzialmente rispondono correttamente alla domanda.
Notare che mtime si riferisce alla modifica del contenuto di un file, ctime alla modifica del suo status (una qualsiasi informazione presente nel suo inode).
- Come si trovano tutti i file posseduti da un dato utente?
La sintasssi completa è:
find / -type f -user utente
- Come si trovano file che non hanno un owner valido ed esistente sul sistema?
find / -type f -nouser
- Come si visualizza il contenuto di tutti i file che matchano un dato criterio di ricerca?
find / -type f -name "*txt" | xargs cat
è una risposta valida.
Notare la logica:
L'output del comando find (secondo i molteplici criteri che si possono impostare) viene dato come input al comando xargs il quale esegue il comando specificato (cat) per ogni file.
- Come si trovano tutti i file che contengono una data stringa?
Sia una risposta tipo:
grep -i -l -r "stringa" /percorso
che
find /percorso -type f -print | xargs grep -l stringa
sono due ottime risposte (a dimostrazione che con Unix la stessa cosa si può fare in modi diversi).
Ricerca nel file system: find, locate. Confronto e verifica di file: diff, md5sum. Filtri di output: grep, wc, sed, awk.