Risposte:
Usa cerca per quello:
find . -name "foo*"
findha bisogno di un punto di partenza e il .(punto) punta alla directory corrente.
find . foo*, foo*sarebbe stato ampliato E POI passato per trovare.
" "è molto necessario per la ricerca ricorsiva.
find . -name "foo*" 2>/dev/null
Il piping find in grep è spesso più conveniente; ti dà la piena potenza delle espressioni regolari per la corrispondenza arbitraria con caratteri jolly.
Ad esempio, per trovare tutti i file con stringa "foo" senza distinzione tra maiuscole e minuscole nel nome file:
~$ find . -print | grep -i foo
findinoltre ha le -iname, -regexe -iregexbandiere per wildcard-insensitive caso, regex, e la corrispondenza regex-insensitive caso, in modo da tubazioni grepè inutile.
findcomando che supporta tali opzioni. A volte grepdiventa l'unica opzione.
find troverà tutti i file che corrispondono a un modello:
find . -name "*foo"
Tuttavia, se si desidera un'immagine:
tree -P "*foo"
Spero che sia di aiuto!
brew install treeper utenti Mac OSX senza apt-getinstallazione
find -L . -name "foo*"
In alcuni casi, ho avuto bisogno del parametro -L per gestire i collegamenti alla directory simbolica. Per impostazione predefinita, i collegamenti simbolici vengono ignorati. In quei casi è stato abbastanza confuso dato che avrei cambiato directory in una sottodirectory e vedevo il file corrispondente allo schema ma find non restituiva il nome file. L'uso di -L risolve questo problema. Le opzioni di collegamento simbolico per find sono -P -L -H
Se la tua shell supporta una nuova opzione globbing (può essere abilitata da :)shopt -s globstar , puoi usare:
echo **/*foo*
per trovare ricorsivamente file o cartelle. Questo è supportato da Bash 4, zsh e shell simili.
Personalmente ho definito questa funzione shell:
f() { find . -name "*$1*"; }
Nota: la riga sopra può essere incollata direttamente nella shell o aggiunta nel ~/.bashrcfile dell'utente .
Quindi posso cercare qualsiasi file digitando:
f some_name
In alternativa è possibile utilizzare fdun'utilità con una sintassi semplice, ad es fd pattern.
shopt -s globstarcomando. Questo è supportato in Bash, zsh e shell simili.
bash-3.2$ shopt -s globstardàbash: shopt: globstar: invalid shell option name
fdNel caso in cui findsia troppo lento, prova l' fdutilità: un'alternativa semplice e veloce afind scritta in Rust.
Sintassi:
fd PATTERN
demo:
Pagina iniziale: https://github.com/sharkdp/fd
asciicast2vectorpuò essere usato.
find <directory_path> -type f -name "<wildcard-match>"
Nel jolly-match puoi fornire la stringa che desideri abbinare, ad es. * .C (per tutti i file c)
Puoi usare:
# find . -type f -name 'text_for_search'
Se vuoi usare REGX usa -iname
# find . -type f -iname 'text_for_search'
Il modo predefinito per cercare file ricorsivi e disponibile nella maggior parte dei casi è
find . -name "filepattern"
Inizia l'attraversamento ricorsivo per il nome file o il modello all'interno della directory corrente in cui ti trovi. Con il comando find, è possibile utilizzare caratteri jolly e varie opzioni, per visualizzare un elenco completo di opzioni, digitare
man find
o se le pagine man non sono disponibili sul tuo sistema
find --help
Tuttavia, ci sono strumenti più moderni e più veloci che trovi, che stanno attraversando l'intero filesystem e indicizzando i tuoi file, uno di questi strumenti comuni è individuare o slocate / mlocate, dovresti controllare il manuale del tuo sistema operativo su come installarlo, e una volta che è installato ha bisogno di avviare il database, se lo script di installazione non lo fa per te, puoi farlo manualmente digitando
sudo updatedb
E, per usarlo per cercare un determinato tipo di file
locate filename
Oppure, per cercare il nome file o lo scalpiccio all'interno della directory corrente, è possibile digitare:
pwd | xargs -n 1 -I {} locate "filepattern"
Esaminerà il suo database di file e stamperà rapidamente i nomi dei percorsi che corrispondono al modello che hai digitato. Per visualizzare l'elenco completo delle opzioni di individuazione, digitare:
locate --help oman locate
Inoltre, è possibile configurare Locate per aggiornare il suo database negli orari pianificati tramite cron job, quindi il cron di esempio che aggiorna db all'1AM sarebbe simile a:
0 1 * * * updatedb
Questi lavori cron devono essere configurati da root, poiché updateb necessita del privilegio di root per attraversare l'intero filesystem.
Sono sorpreso di vedere che la localizzazione non viene usata pesantemente quando dobbiamo ricorsivamente.
Vorrei prima individuare "$ PWD" per ottenere l'elenco dei file nella cartella corrente di interesse, quindi eseguire greps su di essi come mi pare.
locate "$PWD" | grep -P <pattern>
Naturalmente, ciò presuppone che l'aggiornamentob sia stato eseguito e che l'indice sia aggiornato periodicamente. Questo è un modo molto più veloce per trovare i file che per eseguire una ricerca e chiedendogli di scendere dall'albero. Menzionandolo per completezza. Niente contro l'uso di find, se l'albero non è molto pesante.
locate "$PWD*.mp4" Solo per ricordare che potresti essere in grado di saltare lagrep
Sotto il comando aiuta a cercare qualsiasi file
1) Indipendentemente dal caso
2) Risultato Escludendo le cartelle senza autorizzazione
3) Ricerca dalla radice o dal percorso che ti piace. Cambia / con il percorso che preferisci.
Sintassi:
find -iname '' 2> & 1 | grep -v "Autorizzazione negata"
Esempio
trova / -iname 'C * .xml' 2> & 1 | grep -v "Autorizzazione negata"
find / -iname '*C*.xml' 2>&1 | grep -v "Permission denied"
find / -iname '*C*.xml' 2>/dev/null
Se si desidera cercare un file speciale con caratteri jolly, è possibile utilizzare il seguente codice:
find . -type f -name "*.conf"
Supponiamo che tu voglia cercare tutti i file .conf da qui:
.indica che la ricerca è iniziata da qui (posizione corrente)
-typeindica il tipo di elemento di ricerca che qui è il file (f).
-namesignifica che vuoi cercare file con nomi * .conf .
Uso
find path/to/dir -name "*.ext1" -o -name "*.ext2"
Spiegazione
find fa la ricorsione.-osta per -or. Quindi sopra significa cercare questo jolly O questo. Se hai un solo motivo, non è necessario -o.