Hoe de fd-opdracht op Linux te gebruiken

Een terminalvenster op een Linux-pc met een desktop in Ubuntu-stijl.
Fatmawati Achmad Zaenuri / Shutterstock

Op Linux, fd is een eenvoudiger alternatief voor de find opdracht. Het heeft een vereenvoudigde syntaxis, gebruikt verstandige standaardwaarden en heeft ingebouwd gezond verstand. Laten we het eens proberen.

fd versus vind: wat is het verschil?

De fd commando is niet bedoeld om het traditionele find commando, dat op Linux heeft gestaan, nou ja, voor altijd. In plaats daarvan, fd probeert te voldoen aan de meeste gangbare toepassingen van find op een eenvoudiger manier – en het is vaak acht of negen keer sneller dan find. Je kunt enkele van zijn benchmarks zien op de GitHub-repositorypagina van het project.

fd heeft een gekleurde output, vergelijkbaar met die van sommige ls modi. Het is recursief, maar zoekt niet standaard naar verborgen mappen. Het is op de hoogte van Git en zal ook automatisch alle patronen in je “.gitignore” bestand negeren.

fd is standaard hoofdlettergevoelig. Als uw zoekpatroon echter een hoofdletter bevat, fd werkt in een hoofdlettergevoelige modus. U kunt de standaardinstellingen natuurlijk opheffen, maar in veel gevallen werken ze in uw voordeel.

VERWANT: Hoe alle zoekopdrachten van Linux te gebruiken

Fd

Sinds Ubuntu 19.04 (Disco Dingo,) kunt u fd rechtstreeks door het officieel onderhouden pakket te bellen met apt-get. Als je een oudere versie van Ubuntu gebruikt, bekijk dan de installatie-instructies op de Git-hubpagina.

Typ het volgende:

sudo apt-get install fd-find

sudo apt-get install fd-find in een terminalvenster.

In Ubuntu is de opdracht fdfind om te voorkomen dat de naam botst met een ander bestaand hulpprogramma. Als je dat wilt fd, u kunt een alias instellen:

alias fd=fdfind

alias fd = fdfind in een terminalvenster.

Om de alias persistent te maken, zodat deze beschikbaar blijft na het opnieuw opstarten, plaatst u deze in uw “.bashrc” of “.bash_aliases” bestand.

VERWANT: Aliassen en shell-functies maken op Linux

Installeren fd typ dit commando in Fedora:

sudo dfn install fd-find

sudo dnf install fd-find in een terminalvenster.

Typ op Manjaro het volgende:

sudo pacman -Syu fd

sudo pacman -Syu fd in een terminalvenster.

fd versus fdfind

Om verwarring te voorkomen, hebben we de opdracht met de standaardnaam gelaten, fdfind, op onze Ubuntu-test-pc. fd en fdfind zijn exact hetzelfde commando, zoals je zult zien in het volgende voorbeeld (als je daarom vraagt fdfind om zijn versie te laten zien, noemt hij zichzelf “fd”):

fdfind --version

fdfind --version in een terminalvenster.

We noemen het commando ‘fed’, maar in de voorbeelden gebruiken we de Ubuntu ‘fdfind’. Op andere Linux-distributies kun je “fd” typen in plaats van “fdfind” om een ​​paar toetsaanslagen te besparen.

Eenvoudige zoekopdrachten met fd

Als je gebruikt fd zonder opdrachtregelopties, gedraagt ​​het zich een beetje zoals ls, behalve dat het standaard bestanden in submappen weergeeft.

Typ het volgende:

fdfind

fdfind in een terminalvenster.

De uitvoer verschijnt in verschillende kleuren voor verschillende bestandstypen en mappen.

Uitvoer van fdfind in een terminalvenster.

Om bestanden van een specifiek type te zien, gebruikt u de -e (extensie) optie. Merk op dat u de extensie niet hoeft vooraf te laten gaan met een punt (.), En dat deze ook niet hoofdlettergevoelig is.

U kunt bijvoorbeeld het volgende typen:

fdfind -e png

fdfind -e png in een terminalvenster.

Nu zijn de enige vermelde bestanden PNG-afbeeldingsbestanden.

uitvoer van fdfind -e png in een terminalvenster.

Om naar een enkel bestand te zoeken, typt u de naam op de opdrachtregel, zoals:

fdfind index.page

fdfind index.page in een terminalvenster.

Het bestand is gevonden en bevindt zich toevallig in een submap. We hoefden het niet te vertellen fd om recursief te zoeken.

Om het zoeken in een bepaalde directory te laten starten, moet u een bestandspad op de opdrachtregel opnemen. De volgende opdracht start een zoekopdracht in de map “/ etc” en zoekt naar bestanden die “passwd” in de bestandsnaam bevatten:

fdfind passwd /etc

fdfind passwd / etc in een terminalvenster.

Hier zoeken we naar alle C-broncodebestanden die “coordin” in de bestandsnaam bevatten:

fdfind -e c coord

fdfind -ec coördin in een terminalvenster.

Er zijn twee overeenkomende bestanden gevonden.

fd en Git

Git is een extreem populair versiecontrolesysteem voor broncode. Als je Git op je computer gebruikt, gebruik je waarschijnlijk “.gitignore” -bestanden om Git te vertellen welke bestanden het zich zou moeten bezighouden, en welke het kan negeren. Standaard, fd respecteert de instellingen in uw “.gitignore” -bestanden.

In deze directory hebben we een Git-repository en een “.gitignore” -bestand. We typen het volgende:

ls -adl .git*

ls -adl .git * in een terminalvenster.

Laten we het vragen fd om alle bestanden weer te geven die “coordin” in de bestandsnaam bevatten. We herhalen de zoekopdracht en gebruiken de -I (niet negeren) optie. Dit vertelt fd om de instellingen in het “.gitignore” -bestand te negeren en elk overeenkomend bestand te rapporteren.

Om dit allemaal te doen, typen we het volgende:

fdfind coord
fdfind coord -I

fdfind coördin in een terminalvenster.

De twee extra bestanden in de tweede set resultaten zijn objectbestanden. Deze worden gemaakt wanneer een bestandsprogramma wordt gecompileerd. Ze worden vervolgens door de linker gebruikt om de definitieve uitvoerbare versie van het programma te maken.

Objectbestanden worden doorgaans genegeerd door broncode-versiebeheerprogramma’s. Ze worden elke keer dat u uw programma compileert opnieuw gegenereerd, zodat u er geen kopieën van hoeft op te slaan. Er is een vermelding in het “.gitignore” -bestand dat Git instrueert om objectbestanden te negeren, en standaard, fd negeert ze ook.

De -I (niet negeren) optie dwingt fd om alles terug te geven wat het vindt, in plaats van te worden geleid door het “.gitginore” -bestand.

Bestandstypen en hoofdlettergevoeligheid

Je kunt vragen fd om te zoeken naar mappen, bestanden (inclusief degene die uitvoerbaar en leeg zijn) en symbolische koppelingen. U kunt dit doen door de -t (type) optie, gevolgd door een van de onderstaande letters:

  • f: Het dossier.
  • d: Directory.
  • l: Symbolische link.
  • X: Uitvoerbaar bestand.
  • e: Leeg bestand.

Het volgende zoekt naar een map met de naam afbeeldingen:

fdfind -td images

fdfind -td afbeeldingen in een terminalvenster.

Er is een overeenkomst gevonden, een submap lager dan de huidige.

Laten we eens kijken hoe hoofdlettergevoeligheid werkt met zoekpatronen. We typen het volgende om eerst te zoeken naar bestanden met “geo” in hun bestandsnaam, en vervolgens naar bestanden die “Geo” in hun bestandsnaam bevatten:

fdfind -tf geo
fdfind -tf Geo

fdfind -tf geo in een terminalvenster.

In de eerste opdracht hebben we een zoekpatroon in kleine letters gebruikt, waardoor fd om hoofdletterongevoelig te werken. Dit betekent dat zowel “Geo” als “geo” geldige overeenkomsten zijn.

Ons tweede commando bevatte een hoofdletter, waardoor fd om op een hoofdlettergevoelige manier te werken. Dit betekent dat alleen “Geo” een geldige match is.

Opdrachtuitvoering

De fd commando stelt u in staat een ander commando te starten en het uit te voeren op elk van de gevonden bestanden.

Laten we zeggen dat we weten dat er ergens een zip-bestand in onze broncodemap staat. We kunnen ernaar zoeken met behulp van de volgende opdracht, die zoekt naar bestanden met de ZIP-extensie:

fdfinf -e zip

fdfinf -e zip in een terminalvenster.

Met de -x (exec) optie, kunt u elk gevonden bestand doorgeven aan een ander commando om erdoor te worden verwerkt. We kunnen bijvoorbeeld het volgende typen om het unzip-hulpprogramma aan te roepen om ons ZIP-bestand uit te pakken (de “{}” is een tijdelijke aanduiding voor het gevonden bestand):

fdfind -e zip -x unzip {}

Hiermee wordt het bestand uitgepakt in de huidige werkmap. Als we willen dat het wordt uitgepakt in de map met het ZIP-bestand, kunnen we een van de volgende tijdelijke aanduidingen gebruiken:

  • {}: Het volledige bestandspad en de naam van het gevonden bestand.
  • {/}: De bestandsnaam van het gevonden bestand.
  • {//}: De map met het gevonden bestand.
  • {/.}: De bestandsnaam van het gevonden bestand, zonder de extensie.

Om ons ZIP-bestand te vinden en uit te pakken in de map waarin het zich bevindt, kunnen we het unzip -d (directory) optie, en geef de tijdelijke aanduiding voor de bovenliggende directory ({//}):

fdfind -e zip -x unzip {} -d {//}

fdfind-e zip -x unzip {} -d {//} in een terminalvenster.

Het ZIP-bestand wordt vervolgens gelokaliseerd en uitgepakt in de bovenliggende map.

Uitvoer van fdfind-e zip -x unzip {} -d {//} in een terminalvenster.

Uw zoekactie?

Omdat het zo eenvoudig de meest voorkomende toepassingen dekt, fd kan gemakkelijk uw go-to “vind” -opdracht worden. Wanneer je de meer geavanceerde functies nodig hebt, kun je altijd terugkeren naar die doorgewinterde veteraan, find.

Nieuwste artikelen

Gerelateerde artikelen