W systemie Linux, fd stanowi prostszą alternatywę dla polecenia find. Charakteryzuje się uproszczoną składnią, rozsądnymi wartościami domyślnymi oraz wbudowanym zdrowym rozsądkiem. Przyjrzyjmy się temu bliżej.
fd vs find: Czym się różnią?
Fd nie ma na celu zastąpienia tradycyjnego polecenia find, które jest obecne w systemie Linux od zawsze. Zamiast tego, fd dąży do zaspokojenia większości typowych potrzeb związanych z wyszukiwaniem w prostszy sposób – często jest od ośmiu do dziewięciu razy szybszy niż find. Możesz zobaczyć niektóre z jego testów porównawczych na stronie repozytorium GitHub.
Fd oferuje kolorowe wyjścia, przypominające niektóre tryby ls. Działa rekurencyjnie, jednak domyślnie nie przeszukuje ukrytych katalogów. Ponadto, ma świadomość Gita i automatycznie ignoruje wszelkie wzorce z pliku „.gitignore”.
Domyślnie fd nie rozróżnia wielkości liter. Jeżeli jednak wzorzec zawiera wielką literę, fd przechodzi w tryb rozróżniania wielkości liter. Oczywiście, wartości domyślne można dostosować, ale w wielu przypadkach działają one na Twoją korzyść.
Jak zainstalować fd?
Od wersji Ubuntu 19.04 (Disco Dingo) możesz zainstalować fd bezpośrednio, korzystając z oficjalnie zarządzanego pakietu za pomocą apt-get. Użytkownicy starszych wersji Ubuntu powinni zapoznać się z instrukcjami instalacji na stronie GitHub.
Wprowadź następujące polecenie:
sudo apt-get install fd-find
W systemie Ubuntu polecenie to nazywa się fdfind, aby uniknąć konfliktu z innym istniejącym narzędziem. Jeżeli chcesz używać aliasu fd, możesz ustawić go w następujący sposób:
alias fd=fdfind
Aby alias był trwały i dostępny po ponownym uruchomieniu, powinieneś umieścić go w pliku „.bashrc” lub „.bash_aliases”.
Aby zainstalować fd w Fedorze, użyj następującego polecenia:
sudo dnf install fd-find
W Manjaro wystarczy wpisać:
sudo pacman -Syu fd
fd a fdfind
Aby uniknąć nieporozumień, na naszym komputerze testowym z systemem Ubuntu zostawiliśmy polecenie z jego domyślną nazwą, fdfind. Zarówno fd, jak i fdfind to dokładnie to samo polecenie, co można zobaczyć w poniższym przykładzie (jeśli poprosisz fdfind o pokazanie wersji, wyświetli siebie jako „fd”):
fdfind --version
Będziemy nazywać to polecenie „fd”, ale w przykładach użyjemy „fdfind” w systemie Ubuntu. W innych dystrybucjach Linuksa możesz wpisać „fd” zamiast „fdfind”, co pozwoli zaoszczędzić kilka naciśnięć klawiszy.
Podstawowe wyszukiwanie z użyciem fd
Kiedy korzystasz z fd bez dodatkowych opcji, działa on trochę jak ls, z tą różnicą, że domyślnie wyświetla pliki w podkatalogach.
Wpisz poniższe polecenie:
fdfind
Wyniki zostaną wyświetlone w różnych kolorach dla różnych typów plików i katalogów.
Aby wyszukać pliki określonego typu, użyj opcji -e (rozszerzenie). Zwróć uwagę, że nie musisz poprzedzać rozszerzenia kropką (.), a także nie jest ono rozróżniane wielkościami liter.
Na przykład, możesz wpisać:
fdfind -e png
W rezultacie zostaną wymienione jedynie pliki graficzne PNG.
Aby wyszukać konkretny plik, wystarczy wpisać jego nazwę w wierszu poleceń, na przykład:
fdfind index.page
Plik został znaleziony i znajduje się w podkatalogu. Nie musieliśmy wskazywać fd, aby przeszukiwał rekurencyjnie.
Aby rozpocząć wyszukiwanie w określonym katalogu, dodaj ścieżkę do wiersza poleceń. Poniższe polecenie rozpocznie wyszukiwanie w katalogu „/etc” i będzie poszukiwać plików zawierających słowo „passwd” w nazwie:
fdfind passwd /etc
W tym przypadku 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 a Git
Git to niezwykle popularny system kontroli wersji kodu źródłowego. Jeżeli korzystasz z Gita na swoim urządzeniu, z pewnością używasz plików „.gitignore”, aby wskazać, które pliki powinny być brane pod uwagę, a które można zignorować. Domyślnie fd respektuje ustawienia zawarte w plikach „.gitignore”.
W naszym katalogu mamy repozytorium Git oraz plik „.gitignore”. Wpisujemy:
ls -adl .git*
Poprośmy fd o wyświetlenie wszystkich plików zawierających „koordyn” w nazwie. Następnie powtórzymy to samo wyszukiwanie, używając opcji -I (ignoruj). To polecenie sprawi, że fd zignoruje ustawienia w pliku „.gitignore” i zgłosi wszystkie pasujące pliki.
Wpisujemy:
fdfind coord
fdfind coord -I
Dwa dodatkowe pliki w drugim zestawie wyników to pliki obiektowe. Są one tworzone podczas kompilacji programu i używane przez kompilator do tworzenia finalnej wersji wykonywalnej. Pliki obiektowe są zazwyczaj ignorowane przez systemy kontroli wersji, ponieważ są generowane na nowo za każdym razem, gdy kompilujesz program, więc nie ma potrzeby ich przechowywania. W pliku „.gitignore” znajduje się wpis, który instruuje Git, aby ignorował pliki obiektowe, a domyślnie fd również je pomija.
Opcja -I (bez ignorowania) zmusza fd do zwrócenia wszystkich wyników, niezależnie od ustawień w pliku „.gitignore”.
Typy plików oraz rozróżnianie wielkości liter
Możesz poprosić fd o wyszukiwanie katalogów, plików (w tym plików wykonywalnych i pustych) oraz dowiązań symbolicznych. Można to zrobić za pomocą opcji -t (typ), a następnie jednej z następujących 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, które znajduje się o jeden podkatalog niżej niż bieżący.
Sprawdźmy, jak działa rozróżnianie wielkości liter w wzorcach wyszukiwania. Wpisujemy poniższe polecenie, aby najpierw wyszukać pliki zawierające „geo” w nazwach, a następnie te, które zawierają „Geo”:
fdfind -tf geo
fdfind -tf Geo
W pierwszym poleceniu użyliśmy wzorca małymi literami, co powoduje, że fd działa bez rozróżniania wielkości liter. Oznacza to, że zarówno „Geo”, jak i „geo” są prawidłowymi dopasowaniami.
W drugim poleceniu użyliśmy wielkiej litery, co skutkuje tym, że fd działa z uwzględnieniem wielkości liter. W tym przypadku tylko „Geo” jest prawidłowym dopasowaniem.
Wykonywanie poleceń
Polecenie fd umożliwia uruchomienie innego polecenia dla każdego z odnalezionych plików.
Na przykład, jeśli wiemy, że w naszym drzewie katalogów znajduje się plik ZIP, możemy go wyszukać przy użyciu polecenia, które odnajdzie pliki z rozszerzeniem ZIP:
fdfind -e zip
Za pomocą opcji -x (wykonaj), możesz przekazać każdy znaleziony plik do innego polecenia w celu jego przetworzenia. Na przykład możemy użyć następującego polecenia, aby wywołać narzędzie do rozpakowywania, aby rozpakować plik ZIP („{}” to symbol zastępczy reprezentujący znaleziony plik):
fdfind -e zip -x unzip {}
To spowoduje rozpakowanie pliku w bieżącym katalogu roboczym. Jeśli chcemy, aby plik został rozpakowany w katalogu, w którym się znajduje, możemy użyć jednego z następujących symboli zastępczych:
{}: Pełna ścieżka do pliku i jego nazwa.
{/}: Nazwa znalezionego pliku.
{//}: Katalog zawierający znaleziony plik.
{/.}: Nazwa znalezionego pliku bez rozszerzenia.
Aby nasz plik ZIP został znaleziony i rozpakowany w katalogu, w którym się znajduje, możemy użyć opcji unzip -d (katalog) i przekazać element zastępczy dla katalogu nadrzędnego ({//}):
fdfind -e zip -x unzip {} -d {//}
Plik ZIP zostanie następnie zlokalizowany i rozpakowany w folderze nadrzędnym.
Czy to jest twoje miejsce do znalezienia?
Dzięki prostocie, z jaką pokrywa najczęstsze zastosowania, fd może łatwo stać się preferowanym poleceniem „znajdź”. W razie potrzeby zawsze możesz wrócić do bardziej zaawansowanych funkcji polecenia find.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.