
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

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

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

Typ op Manjaro het volgende:
sudo pacman -Syu fd

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

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

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

Om bestanden van een specifiek type te zien, gebruikt u de (extensie) optie. Merk op dat u de extensie niet hoeft vooraf te laten gaan met een punt (.), En dat deze ook niet hoofdlettergevoelig is.-e
U kunt bijvoorbeeld het volgende typen:
fdfind -e png

Nu zijn de enige vermelde bestanden PNG-afbeeldingsbestanden.

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

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

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

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*

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

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

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

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

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

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

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.