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!