Używam polecenia find do wyszukiwania w dużych i zagnieżdżonych strukturach katalogów.
Wynik-wynik zawiera czasem podwójny ukośnik (//).
Przykład (po „Pobraniu”):
#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
Najpierw pomyślałem, że oznaczy bieżący katalog roboczy. Ale tak nie jest.
Jakie jest znaczenie tego podwójnego ukośnika?
Zwykle kopiuję wynik do schowka, przechodzę do wyszukiwarki. Następnie „Shift” + „Command” + „g” i wklejanie ścieżki (do pliku) do pola. Aby otwarty był katalog zawierający.
Działa w porządku. Ale podwójny ukośnik muszę usunąć ręcznie.
Dlatego: Jak mogę tego uniknąć?
Odpowiedzi:
find
jest raczej dosłowny. Kiedy każesz mu szukać w "~ / Downloads /", używa tego (w tym ukośnika) jako prefiksu dla tego, co znajdzie. Ponieważ na końcu ścieżki, którą mu podałeś, znajduje się niepotrzebny i nieistotny ukośnik, kończysz z niepotrzebnym i nieistotnym dodatkowym ukośnikiem w wyniku.Rozwiązanie: usuń końcowe „/” z katalogu wyszukiwania:
źródło
Oznacza, że używasz dziwnego starego znaleziska BSD.
Rzeczywiście możesz pominąć końcowy ukośnik w swoim oryginalnym poleceniu, ale ponieważ jest on dodawany automatycznie poprzez uzupełnianie tabulatorami (które zdecydowanie powinieneś w jak największym stopniu wykorzystać), a ponieważ ukośnik końcowy jest faktycznie używany w wielu miejscach gdzie indziej, aby mieć pewność, że ma do czynienia z katalogiem, a nie nazwą pliku, pomijanie go jest sprzeczne z intuicją i głupie.
Zamiast tego sugeruję zrobienie jednej z tych innych rzeczy:
a) Zrób opakowanie, aby znaleźć rury do sed: | sed 's @ // @ / @'
b) Zainstaluj findutils GNU za pomocą „brew install findutils”, a następnie albo bezpośrednio użyj „gfind”, aliasu „find” na „gfind”, albo dodaj / usr / local / opt / findutils / libexec / gnubin do swojej ścieżki (co również dodaje GNU findutils „locate”, „updatedb” i „xargs”).
c) Przejdź na właściwy system operacyjny GNU / Linux, który nie miałby tego problemu (i tysiąca innych) w pierwszej kolejności. : p
źródło
set mark-directories off
do swojego.inputrc
i możesz iść. Od jednego z tych starych facetów z BSD.