Come trovare una directory su Linux?


453

Ho un VPS con Suse Linux 10.3 .

Ho effettuato l'accesso tramite SSH / putty e sto cercando di trovare dove si trovano i miei file web.

Dal momento che sto caricando via FTP in una directory chiamata httpdocs , presumo che questa directory esista da qualche parte.

Le mie ricerche su Google mi hanno insegnato a farlo, vai nella mia directory principale e digita:

find httpdocs -type d

ma dice " Nessun file o directory ".

Come posso trovare questa directory?


4
Nel caso qualcuno si stia chiedendo, il comando nella domanda trova tutte le directory ( -type d) nella voce della directory httpdocs(relativa alla directory di lavoro corrente, di solito ma non necessariamente una directory). Non riesce con il messaggio di errore perché non esiste alcuna voce di directory httpdocsnella directory principale del sistema e quindi nessun punto di partenza per una ricerca.
Daniel Beck

Risposte:


609

È:

find / -type d -name 'httpdocs'

il primo parametro "/" è dove cercare, in questo caso "/" è l'intero sistema.

-name potrebbe essere -iname per ignorare il caso

anche -type non è obbligatorio

uso: man find per ulteriori opzioni


2
find / -name 'httpdocs' funziona alla grande grazie
Edward Tanguay,

91
Potrebbe non essere importante per ricerche semplici, ma per comandi di ricerca più complessi, vale la pena notare che le cose vengono valutate nell'ordine in cui si trovano sulla riga di comando. Quindi, potresti voler avere il tipo-d (solo directory) prima di -name, per velocizzare le cose. Ancora una volta, questo potrebbe non importare molto qui, ma quando si entra in ricerche più complesse può migliorare notevolmente la velocità di ricerca.
Dominic Eidson,

14
In realtà, il -nametest è più veloce della maggior parte degli altri test poiché -nameviene confrontato con l'elenco della directory, che è già caricato dal disco, e gli altri test devono essere eseguiti stat(2)per ottenere informazioni sul file. Dopo la prima stat()richiesta di un file, un test successivi ottengono dalla memoria, ad esempio: -type f -mtime -10.
Arcege,

24
Se hai intenzione di eseguire una ricerca sull'intero filesystem, in particolare un server, di solito è buono da usare, nicequindi la ricerca non richiede troppe risorse da processi più critici:nice find / ...
Arcege,

16
Aggiungerei 2> / dev / null per evitare che i miei risultati di ricerca vengano nascosti in tutti gli errori di autorizzazione.
Jason Yeo,

63

questo comando dovrebbe darti quello che stai cercando:

find / -type d -name httpdocs

che cercherà dalla directory principale del tuo server le directory con il nome di httpdocs o se vuoi solo cercare dalla directory corrente sostituisci '/' con un '.'

Un altro comando che puoi provare è individuare che faresti qualcosa del tipo:

locate httpdocs

individuare httpdocs mi dice "individuare: comando non trovato"
Edward Tanguay,

4
Per coloro che usano il comando "Trova" (dato che esiste nel tuo sistema), assicurati che il database che cerca sia aggiornato; normalmente qualche cron job se ne occupa. Altrimenti, esegui "updatedb" (essendo root). Quindi esegui il necessario "individuare <somefile>". Ciò è necessario per trovare file / directory aggiunti di recente.
David Ramirez,

+1 per individuare. È molto più veloce ma solo se il suo indice è aggiornato. Fortunatamente, qualcosa come "httpdocs" non cambierà frequentemente posizione. Se stai pianificando di cercare ripetutamente i file su una macchina, vale la pena di pochi minuti necessari per impostare il processo cron aggiornato.
Doug Harris,

1
Inoltre, in molti casi, Locate restituirà troppi risultati poiché verranno visualizzati tutti i file da 100k in quella directory. In questo caso particolare, se ogni utente ha i propri httpdocs con file di 100 o 1000, il risultato desiderato dall'OP andrà probabilmente perso.
Jistanidiot,

+1 per individuare ... Tengo aggiornato il mio database, quindi questo comando è molto utile ... Ottima idea.
Nicorellius,


13

È importante conoscere il parametro -iname per cercare schemi "insensibili al maiuscolo / minuscolo" e l'uso di caratteri jolly: *,?, Ecc.

Due esempi:

Cerca tutti i file da / root che contengono la stringa "Linux", senza distinzione tra maiuscole e minuscole:

find  /root -type f -iname "*linux*"

Cerca in tutte le directory da / root che contiene la stringa "Linux", senza distinzione tra maiuscole e minuscole:

find  /root -type d -iname "*linux*"

Estratto da qui:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


Questa domanda riguarda come trovare una directory di cui conosci il nome, non come trovare una directory di cui conosci il nome (approssimativamente). Inoltre, la risposta accettata (di oltre 6 anni fa!) Menziona già -inameun'alternativa insensibile al maiuscolo / minuscolo -name.
G-Man il

9

ce l'hai quasi. la sintassi corretta sarebbe:

find / -type d -name httpdocs

La directory è probabilmente sotto /var/www/


che mi dice "i percorsi devono precedere l'espressione"
Edward Tanguay,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.