a magnifying glass searching through text

Come trovare file in Linux: padroneggiare i comandi Trova e Grep

In questo articolo imparerai come trovare file in Linux utilizzando diversi strumenti.

IL

Ricerca per nome file

“Find” is one of the most popular tools to search files in Linux. When you know the file name you can search for it using command below. Replace “/home” with a folder to search through and “filename.txt” with the file name.

$ trova /home -nome nomefile.txt

Per cercare un file nella cartella corrente, sostituisci

$trova. -nome Documenti.zip
./Documenti.zip

Quando non conosci il nome esatto del file, usa l'espressione regolare per cercare una corrispondenza. Il simbolo asterisco (*) corrisponde a qualsiasi set di caratteri dopo il

$ find /home -name "Documenti*"
/home/eugene/Documenti.zip
/home/eugene/Documenti
/home/eugene/Telefono/Documenti

Ricerca per data di modifica

Per cercare i file che sono stati modificati oggi aggiungi

$ trova /home -mtime 0

Ad esempio, troviamo le immagini che sono state modificate 10 giorni fa:

$ trova immagini/ -mtime 10
Immagini/Screenshot/Screenshot dal 2023-11-03 10-29-49.png

Ricerca per tipo di file

IL

Cerca directory: Per trovare tutte le directory all'interno di un percorso specificato, utilizzare l'opzione -type d.

$ trova /home -tipo d

Cerca file normali: Al contrario, per individuare file normali, utilizzare l'opzione -type f.

$ trova /home -tipo f -nome "*.txt"

Cerca collegamenti simbolici: Per cercare collegamenti simbolici, utilizzare l'opzione -type l.

$ trova /home -tipo l -nome "nomelink"

Cerca estensioni di file specifiche: Restringi la ricerca specificando le estensioni dei file.

$ trova /home -tipo f -nome "*.jpg"

Criteri di combinazione

Puoi combinare più criteri per rendere le tue ricerche più precise. Qui

Cerca file modificati con un'estensione specifica: trova i file modificati negli ultimi 7 giorni con l'estensione

$ find /var/logs -type f -name "*.log" -mtime -7

Cerca file modificati in un intervallo di date: individua i file modificati tra il 1° novembre 2023 e il 5 novembre 2023.

$ trova /home -newermt 2023-11-01 ! -newermt2023-11-06

Ulteriori

Ignorare la distinzione tra maiuscole e minuscole: Se vuoi che la ricerca non faccia distinzione tra maiuscole e minuscole, utilizza l'opzione -iname.

$ find /home -iname "documento*"

Limitazione della profondità di ricerca: Limita la profondità di ricerca a un livello specifico con l'opzione -max Depth.

$ trova /home -max Depth 2 -name "*.txt"

Escluse directory specifiche: Escludi determinate directory dalla tua ricerca utilizzando -not o ! opzione.

$ find /home -type f -name "*.txt" -not -path "/home/utente/exclude/*"

Ricorda, padroneggiare il

Cerca per contenuto del file utilizzando

Quando si tratta di trovare contenuti specifici all'interno dei file, il file

Ricerca contenuto di base: Per cercare una stringa specifica in un file, utilizzare la seguente sintassi

$ grep nome file "stringa_ricerca".

Sostituire

Cerca in più file: Se desideri eseguire la ricerca in più file, fornisci un carattere jolly o un modello di file specifico

$ grep "modello" /percorso/dei/file/*.txt

Ricerca senza distinzione tra maiuscole e minuscole: Rendi la tua ricerca senza distinzione tra maiuscole e minuscole con l'opzione -i

$ grep -i nome file "modello".

Visualizza i numeri di riga: Se vuoi conoscere i numeri di riga in cui si trova il modello, usa l'opzione -n

$ grep -n nome file "modello".

Visualizza solo nomi file: Per mostrare solo i nomi dei file contenenti il ​​modello, utilizzare l'opzione -l

$ grep -l "modello" /percorso/dei/file/*.txt

Cerca ricorsivamente: Se vuoi cercare un modello in tutti i file all'interno di una directory e delle sue sottodirectory, usa l'opzione -r

$ grep -r "modello" /percorso/della/directory

Escludi file o directory: Escludi determinati file o directory dalla ricerca con il comando

$ grep "modello" --exclude=*.log /percorso/dei/file/*

Cerca parole intere: Utilizza l'opzione -w per cercare parole intere, impedendo corrispondenze parziali

$ grep -w nome file "parola".

Avanzato

Cerca corrispondenze invertite: Invertire la corrispondenza per visualizzare le righe che non contengono il modello specificato utilizzando l'opzione -v

$ grep -v nome file "modello".

Conteggio delle partite: Se vuoi sapere quante righe contengono il pattern, usa l'opzione -c:

$ grep -c nome file "modello".

Visualizzazione solo del testo corrispondente: mostra solo il testo che corrisponde al modello con l'opzione -o:

$ grep -o nome file "modello".

Ricerca ricorsiva con numeri di riga: Combina le opzioni per una ricerca completa, ad esempio:

$ grep -r -n "modello" /percorso/della/directory

Padroneggiare il

Metodi alternativi di ricerca dei file

Oltre ai potenti

Trova file utilizzando lo script Python

A volte, uno script Python personalizzato può fornire maggiore flessibilità nella ricerca dei file. Qui os E fnmatch moduli:

importare os
da fnmatch importare fnmatch

def trova_file(directory, modello):
    per root, directory, file In os.walk(directory):
        per file In file:
            Se fnmatch(file, modello):
                stampa(os.path.join(root, file))

# Usage
trova_file('/percorso/della/ricerca', '*.TXT')

Questo script attraversa la directory e le sue sottodirectory, abbinando i file in base al modello specificato. Personalizza il trova_file funzione per soddisfare i tuoi criteri di ricerca specifici.

IL

ILindividuare” command is another efficient way to find files on a Linux system. It uses a pre-built index, making searches faster compared to the “find” command. However, keep in mind that the index needs regular updates to include recent changes.

Aggiorna il database di localizzazione:

$ sudo aggiornatob

Cerca file:

$ individua nomefile.txt

Utilizzando il

Se tu

Trova posizione eseguibile:

$ quale nome_eseguibile

Utilizzando

IL

Installa fd:

$ sudo apt-get install fd-find # For Ubuntu/Debian
$ sudo dnf install fd # For Fedora

Cerca file:

$ fdfind Documenti
Telefono/Documenti
Documenti
Documenti.zip

Script e alias personalizzati

Infine, puoi creare script o alias di shell personalizzati per semplificare il processo di ricerca dei file. Ad esempio:

# Custom Alias
alias findtxt='find /path/to/search -name "*.txt"'

# Usage
$ findtxt

Script e alias personalizzati ti consentono di creare scorciatoie per le tue specifiche esigenze di ricerca di file, migliorando il tuo flusso di lavoro.

Trova file in Linux usando lo script Bash

La creazione e l'utilizzo di uno script bash aiuta ad automatizzare le attività ripetitive di ricerca di file in Linux. Di seguito è riportato un esempio di un semplice script Bash che cerca file in base a un modello fornito:

#!/bin/bash

# Bash script to find files based on a pattern

if [ $# -ne 2 ]; then
echo "Usage: $0 <directory> <pattern>"
exit 1
fi

directory=$1
pattern=$2

# Check if the directory exists
if [ ! -d "$directory" ]; then
echo "Error: Directory $directory not found."
exit 1
fi

# Use find command to search for files
find "$directory" -name "$pattern" -print

Salva questo script in un file, ad esempio find_files.sh, e rendilo eseguibile con il seguente comando:

$ chmod x find_files.sh

Ora puoi utilizzare lo script per cercare file fornendo la directory e il pattern come argomenti:

$ ./find_files.sh /percorso/della/ricerca "*.txt"

Questo script controlla se viene fornito il numero corretto di argomenti e se la directory specificata esiste. Quindi utilizza il comando trova per cercare i file in base al modello specificato.

Bonus: come cercare tra le immagini in Linux

Su Linux esistono diversi strumenti e metodi per la ricerca di immagini, ciascuno dei quali offre caratteristiche e capacità uniche. Ecco alcune opzioni:

“find” Command with File Type Filtering:

La norma

$ trova /percorso/delle/immagini -tipo f -nome "*.jpg"

IL

IL

$ sudo apt-get install fd-find # For Ubuntu/Debian
$ sudo dnf install fd # For Fedora

Cerca immagini con un'estensione specifica:

$ fdfind -e jpg

IL

IL

$ individua '*.jpg'

Ricordarsi di aggiornare regolarmente il database di localizzazione per le modifiche recenti:

$ sudo aggiornatob

“grep” Command for Specific Image Names:

Se disponi di una convenzione di denominazione specifica per i file di immagine, puoi utilizzare il file

$ grep -r 'modello' /percorso/delle/immagini

Sostituire

“file” Command

IL

$ file /percorso/delle/immagini/*

Cerca le righe che includono

“feh” Image Viewer with Filelist

Se hai un elenco di file di immagine e desideri visualizzarli, il file

$ feh -f $(trova /percorso/delle/immagini -tipo f -nome "*.jpg")

Si apre un visualizzatore di immagini con un elenco di tutti i file JPEG nella directory specificata.

Utilizzo degli strumenti per i metadati delle immagini

Se le tue immagini hanno metadati, puoi utilizzare strumenti come

$ exiftool -filename -r /percorso/immagini | grep 'termine_ricerca'

Gestori di file grafici

I file manager grafici come Nautilus, Dolphin o Thunar spesso forniscono funzionalità di ricerca. Puoi navigare nella directory e utilizzare la barra di ricerca.

Organizzatori di immagini basati su tag

Strumenti come

Riepilogo

In conclusione, padroneggiare la ricerca di file su Linux implica comprendere e combinare vari comandi, strumenti e tecniche di scripting. Sia tu