2014-07-09 32 views
30

Idealmente, mi sarebbe in grado di utilizzare un programma comeCome posso trovare un file/directory che possa essere ovunque sulla riga di comando di Linux?

find [file or directory name] 

segnalare i percorsi con i corrispondenti nomi di file/directory. Sfortunatamente questo sembra controllare solo la directory corrente, non l'intera cartella.

Ho anche provato a individuare e quali, ma nessuno trova il file, anche se so che è sul computer da qualche parte.

+0

Non so qual è il problema, come 'find -name "nomefile"' trova i file ricorsivamente nella directory di lavoro corrente. – foips

+0

Scusa se non è chiaro, il file potrebbe non essere nella directory di lavoro corrente. Potrebbe essere ovunque sul computer – johncorser

risposta

38

"Sfortunatamente questo sembra controllare solo la directory corrente, non l'intera cartella". Presumibilmente vuoi dire che non guarda nelle sottodirectory. Per risolvere questo problema, utilizzare find -name "filename"

Se il file in questione non si trova nella directory di lavoro corrente, è possibile cercare l'intera macchina tramite

find/-name "filename" 

Questo funziona anche con roba come find/-name "*.pdf", ecc A volte mi piace a tubo che in una dichiarazione di grep pure (in quanto, sulla mia macchina, almeno, si mette in evidenza i risultati), così ho finire con qualcosa come

find/-name "*star*wars*" | grep star 

Fare questo o un metodo simile mi aiuta a trovare istantaneamente la nomefile e reco gnize se è in realtà il file che sto cercando.

+0

Grazie. Per curiosità, funzionerà per nomi di file parziali? – johncorser

+2

Sì, purché si usi l'asterisco. Nota che è case sensitive. Se ho un file chiamato STARTUP che voglio trovare, 'find/-name" * ART * "' lo troverà.nota che 'find/-name" * art * "' NON troverà quel file, poiché "art" è in minuscolo, mentre "STARTUP" è maiuscolo –

+1

@johncorser dovresti anche essere in grado di usare una sorta di RE per trovare cosa ti serve –

4

Se necessità di trovare annidato in alcuni dirs:

find/-type f -wholename "*dirname/filename" 

o connessa dirs:

find/-type d -wholename "*foo/bar" 
2

Il comando find ci vorrà molto tempo, il modo più veloce per la ricerca di file usando locate comando , che cerca nomi di file (e percorso) in un database indicizzato (aggiornato con il comando updatedb).

Il risultato apparirà immediatamente con un semplice comando:

locate {file-name-or-path} 

Se il comando non viene trovato, è necessario installare il pacchetto mlocate ed eseguire updatedb primo comando per preparare il database di ricerca per la prima volta.

Maggiori dettagli qui: http://itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/

0

Sotto esempio aiuterà a trovare la cartella specifica nella directory corrente. Questo esempio solo Ricerca corrente continua e si metterà a cercare sub directory disponibili nella directory corrente

#!/bin/bash 

result=$(ls -d operational) 

echo $result 

test="operational" 

if [ "$result" == "$test" ] 
then 
    echo "TRUE" 
else 
    echo "FALSE" 
fi