Jak korzystać z polecenia fd w systemie Linux

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.

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

sudo apt-get install fd-find w oknie terminala.

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

alias fd = fdfind w oknie terminala.

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

sudo dnf install fd-find w oknie terminala.

W Manjaro wpisz:

sudo pacman -Syu fd

sudo pacman -Syu fd w oknie terminala.

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

fdfind --version w oknie terminala.

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

fdfind w oknie terminala.

Dane wyjściowe są wyświetlane w różnych kolorach dla różnych typów plików i katalogów.

Wyjście z fdfind w oknie terminala.

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

fdfind -e png w oknie terminala.

Teraz jedynymi wymienionymi plikami są pliki graficzne PNG.

wyjście fdfind -e png w oknie terminala.

Aby wyszukać pojedynczy plik, wpisz jego nazwę w wierszu poleceń, na przykład:

fdfind index.page

fdfind index.page w oknie terminala.

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

fdfind passwd / etc w oknie terminala.

Tutaj szukamy wszystkich plików z kodem źródłowym C, które zawierają „koordyn” w nazwie pliku:

fdfind -e c coord

fdfind -ec koordynator w oknie terminala.

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*

ls -adl .git * w oknie terminala.

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

koordynator fdfind w oknie terminala.

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

fdfind -td obrazy w oknie terminala.

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

fdfind -tf geo w oknie terminala.

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

fdfinf -e zip w oknie terminala.

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 {//}

fdfind-e zip -x unzip {} -d {//} w oknie terminala.

Plik ZIP jest następnie zlokalizowany i rozpakowany w katalogu nadrzędnym.

Wyjście z fdfind-e zip -x unzip {} -d {//} w oknie terminala.

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źć.