Comandi Linux e competenze della shell
find: il sistema di ricerca Linux che fa tutto
find è il comando più pericoloso su un server di produzione, ed è esattamente il motivo per cui merita di essere padroneggiato. Enumera, filtra ed esegue in un'unica espressione e ogni classico incidente "/var here be dragons" risale a un'anteprima che qualcuno ha saltato. Le abitudini sono meccaniche: cammina prima con -print o -ls, esegui batch con -exec ... +, passa attraverso -print0 in xargs -0 e tratta -delete come una decisione di secondo passaggio, mai una prima bozza.
Punti chiave
- Filtra sui metadati, non solo sul nome: -type f, -mtime +30, -size +100M e -perm -o+w individua i file strani che mancano sia alle convenzioni di denominazione che ai rapporti sull'età.
- Visualizza l'anteprima di ogni query distruttiva: trova prima /var/www/uploads -name 'core.*' -ls, scambia -ls con -delete solo dopo aver effettivamente letto l'elenco; l'anteprima è il controllo di sicurezza, non un suggerimento.
- -exec cmd {} + raggruppa i file in poche invocazioni e batte il comando \; forma su grandi alberi; la stessa sintassi alimenta "rm ogni file corrispondente in un processo" senza un errore di elenco degli argomenti troppo lungo.
- Output null-safe per impostazione predefinita: find . -name '*.vecchio' -print0 | xargs -0 rm -v; le pipe semplici in xargs sono un noto modello di perdita di dati il giorno in cui un nome file contiene uno spazio.
- -xdev e -max Depth mantengono la passeggiata onesta: impediscono a find di seguire montaggi e istantanee, il che salva sia il runtime che le tue ipotesi su "questa directory".
- Le finestre temporali sono precise se richieste con precisione: -mmin -1440 per le ultime 24 ore, -newermt '2026-01-01' per da una data, e ricorda -xtime significa 'n periodi interi di 24 ore fa' prima di citarlo in un ticket.
- Elimina deliberatamente: trova . -path '*/node_modules' -prune -o -name '*.js' -print salta l'unica directory che altrimenti supererebbe il resto dell'albero in termini di dimensioni e tempo.
- Si aspettano uscite diverse da zero su directory illeggibili; Le righe stderr come "Autorizzazione negata" sono file saltati, non dati, quindi gli script tollerano lo stato di uscita di find o lo controllano esplicitamente invece di assumere percorsi puliti.
Nota dal campo
La nostra peggiore storia di find -delete è iniziata con uno schema di nomi senza virgolette che la seconda shell ha espanso in tre parole a monte di find. La regola è semplice: -print prima, cita sempre e -delete non viene mai utilizzato in un comando la prima volta che viene eseguito.
Domande frequenti
La mia ricerca ha trovato file ma il comando downstream non ha fatto nulla. Perché?
Quasi sempre virgolette o input vuoti: il pattern è stato espanso dalla shell prima che find lo vedesse, oppure xargs non ha ricevuto nulla. Schemi di virgolette e accoppia -print0 con xargs -0 ogni volta.
-elimina o rm dopo la ricerca?
-delete è diretto, veloce e spietato; non può essere mischiato con -exec nella stessa espressione. Esegui prima il comando corrispondente -print e leggilo; questa è l'intera disciplina.
Perché vengono rilevati errori di autorizzazione di stampa nelle directory di sistema?
I componenti che non puoi leggere stampano gli errori su stderr e rendono find exit diverso da zero; filtra con 2>/dev/null per comodità interattiva e non interpretare mai questi errori come assenza di file.
Differenza tra -mtime e -ctime ancora?
-mtime è la modifica del contenuto, -ctime è la modifica dei metadati (autorizzazioni, ridenominazione, conteggio dei collegamenti fisici); un chown o una mossa urta ctime senza toccare mtime, il che confonde esattamente un rapporto al trimestre.
Come Kinetikatech aiuta con comandi linux e competenze della shell
Lo abbiamo già risolto centinaia di volte: I comandi e le abitudini di scripting che decidono se un amministratore gestisce un server o lo combatte: cerca, trasforma, trasferisci e supervisiona testo e processi con gli strumenti presenti in ogni installazione di base. Con Sicurezza server Linux e Gestione server, ottiene il ciclo completo: valutiamo, implementiamo, vigiliamo 24 ore su 24 e rispondiamo in 30 minuti quando conta.