In un recente articolo di Opensource.com, Lewis Cowles ha introdotto il find
comando.
find
è uno dei programmi da riga di comando più potenti e flessibili nella cassetta degli attrezzi quotidiana, quindi vale la pena dedicarci un po' più di tempo.
Come minimo, find
prende una strada per trovare le cose. Ad esempio:
find /
troverà (e stamperà) ogni file sul sistema. E poiché tutto è un file, otterrai molto output da ordinare. Questo probabilmente non ti aiuta a trovare quello che stai cercando. Puoi cambiare l'argomento del percorso per restringere un po' le cose, ma non è comunque più utile che usare ls
comando. Quindi devi pensare a cosa stai cercando di individuare.
Forse vuoi trovare tutti i file JPEG nella tua home directory. Il -name
argomento ti consente di limitare i risultati ai file che corrispondono al modello specificato.
find ~ -name '*jpg'
Ma aspetta! E se alcuni di essi hanno un'estensione maiuscola? -name
è come -name
, ma non fa distinzione tra maiuscole e minuscole.
find ~ -iname '*jpg'
Grande! Ma lo schema dei nomi 8.3 è così del 1985. Alcune delle immagini potrebbero avere un'estensione .jpeg. Fortunatamente, possiamo combinare i modelli con un "o", rappresentato da -o
.
find ~ ( -iname 'jpeg' -o -iname 'jpg' )
Ci stiamo avvicinando. Ma cosa succede se hai delle directory che finiscono in jpg? (Perché hai chiamato una directory bucketofjpg
invece di pictures
è al di là di me.) Possiamo modificare il nostro comando con il -type
argomento per cercare solo i file.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f
O forse ti piacerebbe trovare quelle directory con nomi strani in modo da poterle rinominare in seguito:
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d
Si scopre che ultimamente hai scattato molte foto, quindi restringiamo il campo ai file che sono cambiati nell'ultima settimana.
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Puoi eseguire filtri temporali in base all'ora di modifica dello stato del file (ctime
), ora di modifica (mtime
) o l'ora di accesso (atime
). Questi sono in giorni, quindi se desideri un controllo più dettagliato, puoi esprimerlo in pochi minuti (cmin
, mmin
e amin
, rispettivamente). A meno che tu non sappia esattamente l'ora che desideri, probabilmente anteporre al numero +
(più di) o –
(minore di).
Ma forse non ti interessano le tue foto. Forse stai esaurendo lo spazio su disco, quindi vuoi trovare tutti i file giganteschi (chiamiamolo "maggiore di 1 gigabyte") nel log
directory:
find /var/log -size +1G
O forse vuoi trovare tutti i file di proprietà di bcotton in /data
:
find /data -owner bcotton
Puoi anche cercare i file in base alle autorizzazioni. Forse vuoi trovare tutti i file leggibili in tutto il mondo nella tua home directory per assicurarti di non condividere eccessivamente.
find ~ -perm -o=r
Questo post graffia solo la superficie di ciò che find
può fare. La combinazione di test con la logica booleana può darti un'incredibile flessibilità per trovare esattamente i file che stai cercando. E con argomenti come -exec
o -delete
, puoi fare in modo che find
agire su ciò che... trova. Avere qualsiasi find
preferito espressioni? Condividili nei commenti!