2016-04-25 42 views
5

So come trovare i file utilizzandoUNIX: Come usare trovare comando per trovare il percorso completo se dato percorso parziale

find . -name "file_name" 

Ma se mi viene data una parte di un percorso, dico "folder1/SubFolder2 /" , come ottengo tutto il percorso completo che contiene questo percorso parziale?

Esempio

percorso parziale: folder1/subfolder2/

risultato desiderio:

/bob/folder1/subfolder2/yo/ 
/sandy/folder1/subfolder2/hi/ 
+0

che avrebbe dovuto costruire un involucro attorno all'utility 'find' (quindi forse un' alias'), poiché né l'utility stessa né i file trovati sanno nulla di un percorso assoluto. – arkascha

+0

E un'osservazione al tuo esempio: l'utilità 'find' non troverà mai due file come suggerisci nel risultato desiderato, _except_ se sono entrambi contenuti nella cartella il percorso specificato nella chiamata di' find' punta a, quindi ' .' qui. Ciò significherebbe che nel tuo esempio '.' dovrebbe puntare a'/', altrimenti quel risultato non sarebbe possibile. E in questo caso, tutto ciò che manca è il principale '/' nel percorso che l'utility produce già. Quindi se provi 'find/-name" nome_file "' avrai effettivamente i tuoi percorsi assoluti desiderati ;-) – arkascha

+0

una soluzione rapida è quella di 'find/-name" folder1 "| grep "folder1/folder2" ' –

risposta

7

Utilizzare il -wholename op Zione invece di -name:

find FOLDER -wholename '*folder1/folder2/*' 
2

Questo ha funzionato per me (utilizzando bash)

ls -l /**/folder1/subfolder2/** 
2

Si può farlo come di seguito:

find . -path "*folder1/folder2" -prune -exec find {} -type f -name file.txt \; 

Con -prune non ricorsiva dopo la prima partita in una directory

+0

Hai lasciato' * folder1/folder2' non quotato di proposito? –

+1

@RanyAlbegWein: Grazie per averlo indicato. Modificato ! – sjsam