W systemie Linux fd jest łatwiejszą alternatywą dla polecenia find. Ma uproszczoną składnię, używa rozsądnych wartości domyślnych i ma wbudowany zdrowy rozsądek. Przyjrzyjmy się temu.
Spis treści:
fd versus find: Jaka jest różnica?
Fd polecenie nie ma na celu zastąpienia tradycyjne polecenie znajdowania, które ma był na Linuksie, cóż, od zawsze. Zamiast tego fd stara się zaspokoić większość typowych zastosowań find w prostszy sposób – i często jest osiem lub dziewięć razy szybciej niż find. Możesz zobaczyć niektóre z jego testów porównawczych w projekcie Strona repozytorium GitHub.
fd ma kolorowane wyjście, podobne do niektórych trybów ls. Jest rekurencyjny, ale domyślnie nie przeszukuje ukrytych katalogów. On wie o Git a także automatycznie zignoruje wszelkie wzorce w pliku „.gitignore”.
fd domyślnie nie rozróżnia wielkości liter. Jeśli jednak wzorzec wyszukiwania zawiera wielką literę, fd działa w trybie rozróżniania wielkości liter. Oczywiście możesz zmienić wartości domyślne, ale w wielu przypadkach działają one na Twoją korzyść.
Instalowanie fd
Od Ubuntu 19.04 (Disco Dingo) możesz zainstalować fd bezpośrednio, dzwoniąc do oficjalnie zarządzanego pakietu za pomocą apt-get. Jeśli używasz starszej wersji Ubuntu, sprawdź instrukcje instalacji na stronie centrum Git.
Wpisz następujące informacje:
sudo apt-get install fd-find
W Ubuntu polecenie to fdfind, aby uniknąć konfliktu nazwy z innym istniejącym narzędziem. Jeśli chcesz, aby był to fd, możesz ustawić alias:
alias fd=fdfind
Aby alias był trwały i pozostawał dostępny po ponownym uruchomieniu, umieść go w pliku „.bashrc” lub „.bash_aliases”.
Aby zainstalować fd w Fedorze, wpisz to polecenie:
sudo dfn install fd-find
W Manjaro wpisz:
sudo pacman -Syu fd
fd kontra fdfind
Aby uniknąć nieporozumień, zostawiliśmy polecenie z jego domyślną nazwą, fdfind, na naszym komputerze testowym Ubuntu. fd i fdfind to dokładnie to samo polecenie, co zobaczysz w poniższym przykładzie (jeśli poprosisz fdfind o pokazanie jego wersji, wywoła siebie „fd”):
fdfind --version
Nazwiemy to polecenie „fed”, ale w przykładach użyjemy polecenia „fdfind” systemu Ubuntu. W innych dystrybucjach Linuksa możesz wpisać „fd” zamiast „fdfind”, aby zaoszczędzić kilka naciśnięć klawiszy.
Proste wyszukiwania za pomocą fd
Jeśli używasz fd bez opcji wiersza poleceń, zachowuje się trochę jak ls, z wyjątkiem tego, że domyślnie wyświetla pliki w podkatalogach.
Wpisz następujące informacje:
fdfind
Dane wyjściowe są wyświetlane w różnych kolorach dla różnych typów plików i katalogów.
Aby zobaczyć pliki określonego typu, użyj opcji -e (rozszerzenie). Zwróć uwagę, że nie musisz poprzedzać rozszerzenia kropką (.), Ani nie jest rozróżniana wielkość liter.
Na przykład możesz wpisać:
fdfind -e png
Teraz jedynymi wymienionymi plikami są pliki graficzne PNG.
Aby wyszukać pojedynczy plik, wpisz jego nazwę w wierszu poleceń, na przykład:
fdfind index.page
Plik został znaleziony i znajduje się w podkatalogu. Nie musieliśmy mówić fd, aby przeszukiwał rekursywnie.
Aby wyszukiwanie rozpoczęło się w określonym katalogu, dołącz ścieżkę do pliku w wierszu poleceń. Następujące polecenie rozpocznie wyszukiwanie w katalogu „/ etc” i poszuka plików zawierających słowo „passwd” w nazwie pliku:
fdfind passwd /etc
Tutaj szukamy wszystkich plików z kodem źródłowym C, które zawierają „koordyn” w nazwie pliku:
fdfind -e c coord
Znaleziono dwa pasujące pliki.
fd oraz Git
Git jest niezwykle popularny system kontroli wersji kodu źródłowego. Jeśli używasz Gita na swoim komputerze, prawdopodobnie używasz plików „.gitignore”, aby poinformować Git, którymi plikami powinien się zajmować, a które może zignorować. Domyślnie fd szanuje ustawienia w twoich plikach „.gitignore”.
W tym katalogu mamy repozytorium Git i plik „.gitignore”. Wpisujemy:
ls -adl .git*
Poprośmy fd, aby wyświetlił wszystkie pliki, które zawierają „koordyn” w nazwie pliku. Następnie powtórzymy wyszukiwanie i użyjemy opcji -I (bez ignorowania). To mówi fd, aby zignorował ustawienia w pliku „.gitignore” i zgłosił każdy pasujący plik.
Aby to wszystko zrobić, wpisujemy:
fdfind coord
fdfind coord -I
Dwa dodatkowe pliki w drugim zestawie wyników to pliki obiektowe. Są one tworzone podczas kompilacji programu plikowego. Są one następnie używane przez konsolidator do tworzenia ostatecznej wersji wykonywalnej programu.
Pliki obiektów są zwykle ignorowane przez programy do kontroli wersji kodu źródłowego. Są one generowane ponownie za każdym razem, gdy kompilujesz program, więc nie musisz przechowywać ich kopii. W pliku „.gitignore” znajduje się wpis, który instruuje Git, aby ignorował pliki obiektowe i, domyślnie, fd również je ignoruje.
Opcja -I (no ignore) zmusza fd do zwrócenia wszystkiego, co znajdzie, zamiast kierowania się plikiem „.gitginore”.
Typy plików i rozróżnianie wielkości liter
Możesz poprosić fd o wyszukanie katalogów, plików (w tym plików wykonywalnych i pustych) i dowiązań symbolicznych. Możesz to zrobić za pomocą opcji -t (typ), a następnie jednej z poniższych liter:
f: plik.
d: Katalog.
l: dowiązanie symboliczne.
x: plik wykonywalny.
e: pusty plik.
Poniższy przykład szuka katalogu o nazwie obrazy:
fdfind -td images
Znaleziono dopasowanie, o jeden podkatalog niższy niż bieżący.
Zobaczmy, jak rozróżnianie wielkości liter działa we wzorcach wyszukiwania. Wpisujemy następujące polecenie, aby najpierw wyszukać pliki zawierające „geo” w nazwach plików, a następnie te, które zawierają „geo” w nazwach plików:
fdfind -tf geo
fdfind -tf Geo
W pierwszym poleceniu użyliśmy wzorca wyszukiwania małymi literami, co spowodowało, że fd działał bez rozróżniania wielkości liter. Oznacza to, że zarówno „Geo”, jak i „geo” to prawidłowe dopasowania.
Nasze drugie polecenie zawierało wielką literę, co powodowało, że fd działał z uwzględnieniem wielkości liter. Oznacza to, że tylko „Geo” jest prawidłowym dopasowaniem.
Wykonanie polecenia
Polecenie fd umożliwia uruchomienie innego polecenia i wykonanie go na każdym ze znalezionych plików.
Powiedzmy, że wiemy, że istnieje plik Plik zip gdzieś w naszym drzewie katalogów z kodem źródłowym. Możemy go poszukać poleceniem wyszukującym pliki z rozszerzeniem ZIP:
fdfinf -e zip
Z opcją -x (exec), możesz przekazać każdy znaleziony plik do innego polecenia w celu jego przetworzenia. Na przykład możemy wpisać następujące polecenie, aby wywołać plik narzędzie do rozpakowywania aby rozpakować nasz plik ZIP („{}” to symbol zastępczy reprezentujący znaleziony plik):
fdfind -e zip -x unzip {}
Spowoduje to rozpakowanie pliku w bieżącym katalogu roboczym. Jeśli chcemy, aby był rozpakowany w katalogu zawierającym plik ZIP, możemy użyć jednego z następujących symboli zastępczych:
{}: Pełna ścieżka do pliku i nazwa znalezionego pliku.
{/}: Nazwa znalezionego pliku.
{//}: katalog zawierający znaleziony plik.
{/.}: Nazwa znalezionego pliku, bez rozszerzenia.
Aby nasz plik ZIP został znaleziony i rozpakowany w katalogu, który go zawiera, możemy użyć opcji unzip -d (katalog) i przekazać element zastępczy katalogu nadrzędnego ({//}):
fdfind -e zip -x unzip {} -d {//}
Plik ZIP jest następnie zlokalizowany i rozpakowany w katalogu nadrzędnym.
Twoje miejsce do znalezienia?
Ponieważ z taką prostotą obejmuje najczęstsze zastosowania, fd może łatwo stać się poleceniem „znajdź”. Zawsze, gdy potrzebujesz bardziej zaawansowanych funkcji, zawsze możesz wrócić do tego doświadczonego weterana, znaleźć.