2016-04-25 37 views
5

wiem jak znaleźć pliki za pomocąUNIX: Jak użyć polecenia Znajdź, aby znaleźć pełną ścieżkę jeśli podano częściowa ścieżka

find . -name "file_name" 

Ale jeśli mam podane jedną część ścieżki, powiedzieć „folder1/subfolder2 /” , w jaki sposób uzyskać pełną ścieżkę zawierającą tę ścieżkę częściową?

Przykład

częściowy Ścieżka: folder1/subfolder2/

wynik pragnienie:

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

Trzeba by zbudować otoki wokół narzędzia 'find' (więc może' alias'), ponieważ ani samo narzędzie, ani znalezione pliki nie wiedzą nic o absolutnej ścieżce. – arkascha

+0

I uwaga na twój przykład: narzędzie 'find' nigdy nie znajdzie dwóch plików, jak sugerujesz w pożądanym wyniku, _except_, jeśli oba są zawarte w folderze określonym przez ścieżkę określoną w wywołaniu' find', więc ' . "tutaj. Oznaczałoby to, że w twoim przykładzie '.' musiałoby wskazywać'/', w przeciwnym razie wynik nie byłby możliwy. A w tym przypadku brakuje ci tylko wiodącego '/' ścieżki, którą narzędzie już dostarcza. Więc jeśli spróbujesz 'find/-name 'nazwa_pliku" ', to faktycznie uzyskasz pożądane bezwzględne ścieżki ;-) – arkascha

+0

szybkie obejście to" znajdź/-name "folder1" | grep "folder1/folder2" ' –

Odpowiedz

7

obsługi -wholename op cji zamiast -name:

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

Ten pracował mi (stosując bash)

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

może to zrobić jak poniżej:

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

Z -prune nie recurse po pierwszym meczu w katalogu

+0

Czy celowo pozostawiłeś' * folder1/folder2' nie cytowany? –

+1

@RanyAlbegWein: Dziękuję za wskazanie tego. Edytowane! – sjsam