2016-04-25 6 views
5

Ich weiß, wie Dateien zu finden, mitUNIX: Wie verwenden Sie den Befehl finden vollständigen Pfad zu finden, wenn Teil gegebenen Weg

find . -name "file_name" 

Aber wenn mir einen Teil eines Pfad gegeben ist, sagen Sie „folder1/Unterordner2 /“ , wie bekomme ich den vollständigen Pfad, der diesen Teilpfad enthält?

Beispiel

Teilweg: folder1/subfolder2/

Wunsch Ergebnis:

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

Sie müssen einen Wrapper bauen würde um das 'find'-Dienstprogramm (also vielleicht ein' alias'), da weder das Dienstprogramm selbst noch die gefundenen Dateien irgendeinen absoluten Pfad kennen. – arkascha

+0

Und eine Bemerkung zu Ihrem Beispiel: Das Dienstprogramm 'find' findet niemals zwei Dateien, wie Sie in Ihrem gewünschten Ergebnis vorschlagen, _except_, wenn sie beide innerhalb des Ordners enthalten sind, zeigt der Pfad, den der Aufruf von' find' angibt, also ' .' hier. Das würde bedeuten, dass in Ihrem Beispiel '.' auf'/'zeigen müsste, sonst wäre das Ergebnis nicht möglich. Und in diesem Fall fehlt Ihnen nur das führende '/' im Pfad, den das Dienstprogramm bereits ausgibt. Wenn Sie versuchen, '/ file_name '' zu finden, erhalten Sie die gewünschten absoluten Pfade ;-) – arkascha

+0

eine schnelle Abhilfe ist es '/ -name" folder1 "| zu finden grep "folder1/folder2" ' –

Antwort

7

Verwenden der -wholename op Tion statt -name:

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

Dieser arbeitete für mich (mit bash)

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

Sie es wie unten tun können:

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

Mit -prune Sie Rekursion nicht nach dem ersten Spiel in einem Verzeichnis

+0

Haben Sie' * folder1/folder2' absichtlich nicht angegeben? –

+1

@RanyAlbegWein: Vielen Dank, dass Sie das herausgebracht haben. Bearbeitet! – sjsam

Verwandte Themen