Mam folder nadrzędny o nazwie „folder nadrzędny” z dużą liczbą podfolderów, w tych podfolderach znajduje się plik o nazwie „foo.mp4”.
Mogę łatwo znaleźć te pliki, wykonując następujące czynności:
mymacbook:parent_folder username$ find ./ -name "foo.mp4" -exec echo {} \;
Teraz zwraca ścieżkę do każdego pliku względem folderu nadrzędnego /
./path/to/foo.mp4
Jak mogę zwrócić samą ścieżkę bez nazwy pliku?
find ./ -name "foo.mp4" -printf "%h\n"
wypisze ścieżkę do każdego znalezionego pliku (jeden po wierszu). Co więcej, jak zwykle nikt nie używa, -exec echo {}
dlatego jest -print
(domyślnie nawet pominięty) lub printf
działanie.
-printf
jest tylko GNU. OP wspomina OS / X (system BSD).
-printf
%h
Wiodące katalogi o nazwie pliku (wszystkie oprócz ostatniego elementu). Jeśli nazwa pliku nie zawiera ukośników (ponieważ znajduje się w bieżącym katalogu), specyfikator% h rozwija się do „.” .