Hostwinds Tutorial
Cerca risultati per:
Sommario
Tag: Cloud Servers, Dedicated Server
In questo tutorial, esamineremo una serie di metodi per trovare file e directory (ovvero cartelle) in Ubuntu 20.04 LTS, come trovare tutti i file con un .vecchio estensione o trovare tutti i file e le directory più grandi di 2 GB.Esamineremo anche come eseguire uno o più comandi su ciascun file trovato.
Si noti che uno dei comandi che useremo è individuare, che non viene fornito in modo nativo con Ubuntu.Il individuare Il comando è spesso più veloce di trova Perché mantiene un database di tutti i file che viene aggiornato ogni 24 ore.Il individuare Il comando può essere installato come segue:
sudo apt install mlocate
Poiché tutto nei sistemi operativi simili a UNIX, incluso Ubuntu, è considerato un file, il termine "file" indicherà anche la "directory" se non diversamente chiamato.Inoltre, gli esempi dell'ambiente desktop si basano su Gnomo.Per imparare a accedere al tuo computer Ubuntu remoto usando GNOME, vedi Utilizzo di Windows Remote Desktop con Ubuntu 20.04 TLS.
Con ciò, iniziamo.
Per elencare tutti i file dalla directory corrente verso il basso, è possibile utilizzare i seguenti comandi:
Il disadorno trova Comando Elenca ricorsivamente tutti i file dalla directory corrente:
find
Il individuare Il comando è simile a trova ma richiede uno schema (il carattere jolly in questo caso):
locate *
La velocità di individuare Ha un prezzo, tuttavia.I file di recente modificati potrebbero non essere riflessi nel database.Per risolvere questo problema, è possibile aggiornare il database con sudo aggiornato b (che potrebbe richiedere del tempo) o usare il -e opzione che elenca solo i file esistenti al momento individuare il comando è eseguito (essenzialmente equivalente a trova):
locate -e *
Usando il ricorsivo -R l'opzione consente lo standard ls comanda di produrre risultati simili:
ls -Rlha
È possibile produrre risultati analoghi utilizzando l'ambiente desktop GNOME:
Nei seguenti esempi, cercheremo tutti i file con il .vecchio estensione.
Perché stiamo cercando tutti i file, utilizziamo il sudo comanda per evitare errori di autorizzazione e avviare la ricerca dalla directory principale (/):
sudo find / -iname *.old
Nota che il -nomino opzione ignora il caso mentre -nome non.
Di seguito, il -io l'opzione ignora il caso:
sudo locate -i *.old
È interessante notare, anche con il -e Opzione, la individuare Il comando non trova il /run/blkid/blkid/tab.old file (mentre trova fa).
Senza il carattere jolly (*), l'applicazione dei file desktop gnome fornisce essenzialmente le stesse informazioni del trova comando:
Diciamo che vorremmo trovare tutti i file più grandi di 50 Mib.Per questo compito, possiamo aggiungere il du comando al nostro elenco di probabili sospetti:
Il du Il comando è stato progettato appositamente per questa attività:
sudo du / -ha --threshold=50M
Il -h l'opzione fornisce dimensioni di file (umane) e le -un L'opzione include file e directory:
Per sopprimere i messaggi di errore (quattro), è possibile utilizzare il 2>&- discussione.Puoi anche ordinare per dimensione del file:
sudo du / -ha --threshold=50M 2>&- | sort -h
L'ultima riga mostra che il disco contiene 2,8 Gib di dati in totale.
Quanto segue trova tutti i file (esclusi le directory) più grandi di 50 MIB:
sudo find / -size +50M
Per visualizzare le dimensioni di ciascun file in byte, è possibile utilizzare il -ls opzione (e 2>&- Per rimuovere i messaggi di errore):
sudo find / -size +50M -ls 2>&-
La settima colonna fornisce la dimensione di ciascun file, in byte.Per visualizzare solo il percorso del file, il tipo e le dimensioni, è possibile utilizzare il -printf Opzione, come mostrato:
sudo find / -size +50M -printf "%p %y %s bytes\n" 2>&- | column -t
Il % p Restituisce il nome file, %y il tipo di file, %S la dimensione in byte e \n Genera un carattere newline (per i dettagli, eseguire uomo trova).
Il colonna -t Il comando crea colonne basate su caratteri di spazi bianchi.Si noti che 140737477885952 byte è poco meno di 128 PIB, il che è chiaramente errato.Segue una interpretazione più accurata:
sudo find / -size +50M -printf "%p %y %k KiB\n" 2>&- | column -t
In quanto sopra, %K fornisce la dimensione del file in KIB (al contrario di %S byte).
Perché il individuare Il database del comando non contiene informazioni sulla dimensione del file, non è possibile elencare file più grandi di 50 MIB esclusivamente individuare.
L'applicazione dei file desktop di Gnome fornisce tipico GUI Risultati:
Come si può vedere sopra, l'ordinamento per la colonna dimensione non è del tutto utile rispetto alla ricerca di tutti i file più grandi di 50 MIB.Il du o trova I comandi sono più appropriati per tale attività.
Numerosi comandi sopra menzionati hanno opzioni specificamente per trovare file vuoti.Li esamineremo il prossimo.
Per il trova comando, questa attività è semplice:
sudo find /tmp -empty -type f,d
Questo comando trova tutti i file e le directory vuoti (ovvero, -Type F, D) all'interno del /TMP cartella, come mostrato:
Ma qual è quale?Come sopra, possiamo usare -printf e colonna come segue:
sudo find /tmp -empty -type f,d -printf "%p %y %s bytes\n" | column -t
Si noti che ogni directory vuota richiede che esistano 4096 byte (4 kib) nel file system Ubuntu.Ecco un esempio di una singola directory vuota e un singolo file vuoto:
Ancora una volta, perché il individuare Il database non contiene informazioni sulla dimensione del file, non è possibile trovare direttamente file/directory vuote utilizzando solo il individuare comando.
L'applicazione dei file desktop di Gnome fornisce risultati relativamente non di elpizzazione:
Si dovrebbe fare molti clic per identificare tutti i file vuoti utilizzando l'ambiente desktop GNOME.
Ora che sappiamo come trovare file, potremmo voler eseguire azioni su di loro;come eliminare tutto *.vecchio File.
Il trova comandi -exec L'opzione esegue il comando fornito una volta per ciascun file abbinato.Per esempio:
sudo find / -iname "*.old" -exec echo {} \;
In breve, questo esegue il eco comando su ciascuno .vecchio file trovato.Qui, il {} La sintassi rappresenta ogni file di corrispondenza.Quindi, se vmlinux.old è un file corrispondente, quindi il comando echo vmlinux.old è eseguito.Il punto e virgola viene utilizzato per indicare la fine della stringa di comando seguendo il -exec opzione.Poiché il punto e virgola ha un significato speciale, deve essere fuggito con i personaggi di Backslash (\), come segue:
Per eliminare tutto *.vecchio file da /Home/Karlito directory (o ~ Directory), è possibile eseguire il seguente comando:
sudo find . -iname "*.old" -exec rm -f {} \;
Possiamo vedere che tutti i file in ~ La directory è stata rimossa:
Il individuare Il comando non ha un -exec opzione.Tuttavia, possiamo emulare questa funzionalità usando il Xargs comando:
sudo locate -i "*.old" | xargs -0 echo
Il -0 l'opzione consente Xargs per gestire correttamente i caratteri del nome file atipico.
Per rimuovere tutto *.vecchio file da /Home/Karlito Directory, puoi eseguire:
sudo locate -i "/home/karlito/*.old" | xargs rm
Allo stesso modo, per rimuovere tutto .vecchio file elencati in individuare Database del comando (generalmente tutto *.vecchio file su disco), è possibile eseguire:
sudo locate -i "*.old" | xargs rm
Per eseguire la stessa azione utilizzando l'applicazione File, prima cerca tutti i file con a.vecchio estensione:
Quindi, selezionare tutti i file di corrispondenza premendo CTRL + A. Quindi, premere il tasto Elimina e selezionare il Elimina pulsante:
Possiamo confermare la cancellazione del prompt dei comandi come segue:
Perché il Xargs Il comando è veloce, flessibile e può essere usato con molti altri comandi, generalmente ha senso usarlo per la maggior parte degli scenari.Ad esempio, le seguenti copie tutti i file contenenti "backup" in una directory chiamata "backups" nella cartella domestica dell'utente:
sudo find / -type f -iname "*backup*" -print0 | xargs -0 -I {} sh -c 'stat -c "%n %s bytes" {}; cp {} ~/backups'
Segue una spiegazione dettagliata di ogni comando e opzione:
Mettere insieme tutto ciò si traduce in output in modo simile a quanto segue:
In quanto sopra, possiamo vedere tutti i file che sono stati teoricamente copiati ~/backup.È teorico in quanto non tutti i file sono stati effettivamente copiati:
Questo è un punto importante: non c'erano problemi rispetto alla visualizzazione statistica informazioni correlate ma c'erano problemi per il cp comando (che non sono riportati).
Successivamente, cercheremo il contenuto dei file di corrispondenza per trovare una o più parole chiave.Per iniziare, esamineremo tutto *.tronco d'albero file per occorrenze di avvertimento.Per fare ciò, usiamo l'onnipresente grep comando:
sudo find / -iname '*.log' -type f -print0 | xargs -0 grep warning
Esecuzione dei comandi prima del tubo ( | ) L'operatore restituisce l'elenco previsto di *.registrazione File.Tuttavia, l'esecuzione dell'intera riga di comando restituisce per autorizzazione del file negato errori:
Questo perché il grep Il comando richiede anche sudo elevazione.Pertanto, la seguente riga di comando produce i risultati desiderati (entrambi -nomino e -io Ignora il caso):
sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo -i grep warning
Per trovare tutto *.tronco d'albero file contenenti avvertimento, critico, e/o errore, possiamo usare il logico o ( | ) operatore, che deve essere fuggito per non essere confuso con l'operatore di tubi standard:
sudo find / -iname '*.log' -type f -print0 | xargs -0 sudo grep -l -i 'warning\|critical\|error'
L'opzione "L" minuscola -l Visualizza l'elenco dei file corrispondenti e non il contenuto associato:
Questo tutorial ha confrontato e contrastato diversi modi per trovare file in Ubuntu 22.04 LTS.Ha anche fornito tecniche per l'esecuzione di comandi su file trovati.I sistemi operativi simili a Unix, incluso Ubuntu, offrono un ambiente di linea di comando estremamente ricco per aiutarti a gestire il tuo computer/server Ubuntu.
Scritto da Karlito Bonnevie / giugno 20, 2022