Risposte:
Usa cerca per quello:
find . -name "foo*"
find
ha 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
find
inoltre ha le -iname
, -regex
e -iregex
bandiere per wildcard-insensitive caso, regex, e la corrispondenza regex-insensitive caso, in modo da tubazioni grep
è inutile.
find
comando che supporta tali opzioni. A volte grep
diventa 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 tree
per utenti Mac OSX senza apt-get
installazione
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 ~/.bashrc
file dell'utente .
Quindi posso cercare qualsiasi file digitando:
f some_name
In alternativa è possibile utilizzare fd
un'utilità con una sintassi semplice, ad es fd pattern
.
shopt -s globstar
comando. Questo è supportato in Bash, zsh e shell simili.
bash-3.2$ shopt -s globstar
dàbash: shopt: globstar: invalid shell option name
fd
Nel caso in cui find
sia troppo lento, prova l' fd
utilità: un'alternativa semplice e veloce afind
scritta in Rust.
Sintassi:
fd PATTERN
demo:
Pagina iniziale: https://github.com/sharkdp/fd
asciicast2vector
può 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)
-type
indica il tipo di elemento di ricerca che qui è il file (f).
-name
significa che vuoi cercare file con nomi * .conf .
Uso
find path/to/dir -name "*.ext1" -o -name "*.ext2"
Spiegazione
find
fa la ricorsione.-o
sta per -or
. Quindi sopra significa cercare questo jolly O questo. Se hai un solo motivo, non è necessario -o
.