4 Geweldige Hulpmiddelen om Bestanden Snel Te Vinden in Ubuntu

Velen van u mede-Ubuntu gebruikers zullen bekend zijn met de “Zoeken naar Bestanden” tool waarmee u kunt zoeken naar bestanden. Zoals geldt voor de meeste dingen in Linux, zijn er geweldige desktop tools, maar meer kracht kan worden gevonden in Terminal dan een gestroomlijnde desktop tool kan evenaren.

Vandaag wil ik u laten kennismaken met een paar tools die een karwei van het vinden van bestanden kunnen veranderen in een eenvoudig proces.

locate

De eerste tool die u vertrouwd moet raken met is ook een van de eenvoudigste. Het locate programma werkt op een vergelijkbare manier als de meeste grafische zoekprogramma’s.

Gebruik

Laten we zeggen dat u hebt gelezen hoe u X kunt wijzigen om betere videoprestaties te leveren. Het document dat u leest zegt dat u het bestand xorg.conf moet wijzigen, maar het document zegt niet waar dat is en u weet niet hoe u het moet vinden. U kunt locate gebruiken om het snel voor u te vinden:

$ locate xorg.conf/etc/X11/xorg.conf/usr/share/man/man5/xorg.conf.5.gz/var/lib/x11/xorg.conf.md5sum/var/lib/x11/xorg.conf.roster

Het is duidelijk dat /etc/X11/xorg.conf het bestand is dat we zoeken, maar wat als er tientallen of zelfs honderden resultaten worden geretourneerd? Hoe zou je dat allemaal kunnen beheren? Als je een beetje weet over reguliere expressies (iedere Linux gebruiker zou echt de basis moeten leren), kun je eenvoudig reguliere expressies gebruiken om te zoeken naar directories of bestanden. We kunnen bijvoorbeeld zoeken naar een exacte overeenkomst voor xorg.conf met het volgende commando:

$ locate -r '/xorg.conf$'/etc/X11/xorg.conf

Als u wilt zoeken naar bestanden zonder hoofdlettergevoeligheid, kunt u de optie -i gebruiken. Bijvoorbeeld:

$ locate -i 'monthly report'/home/chris/Documents/August Monthly Report.doc/home/chris/Documents/July Monthly Report.doc/home/chris/Downloads/latest monthly report.doc

Siets dat verwarrend kan zijn wanneer u locate voor het eerst gebruikt, is dat het niet alleen overeenkomsten geeft, maar als de overeenkomst een directory is, geeft het ook een lijst van alle directories en bestanden onder die directory. Bijvoorbeeld:

$ locate Desktop/home/chris/Desktop/home/chris/Desktop/Head Shot.jpg/home/chris/Desktop/Skype.lnk/home/chris/Desktop/Steam.lnk...

Dit commando geeft meer dan duizend resultaten op mijn systeem. Om de resultaten terug te brengen tot een lijst van items die overeenkomen met de zoekterm zonder alle bijbehorende bestanden en mappen, gebruikt u de -b optie:

$ locate -b Desktop/home/chris/Desktop/home/chris/bin/recordSoundAndDesktop.sh/opt/HipChat4/lib/QtQuick/Controls/Styles/Desktop/usr/include/qt4/QtGui/QDesktopServices/usr/include/qt4/QtGui/QDesktopWidget/usr/lib/libreoffice/program/wizards/common/Desktop.py/usr/lib/libreoffice/share/gallery/computers/Computer-Desktop.png/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.py/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.pyc/usr/lib/python3/dist-packages/xdg/DesktopEntry.py/usr/lib/python3/dist-packages/xdg/__pycache__/DesktopEntry.cpython-35.pyc/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Styles/Desktop/usr/share/kde4/apps/kio_desktop/DesktopLinks/usr/share/man/man3/File::DesktopEntry.3pm.gz/usr/share/perl5/File/DesktopEntry.pm/usr/share/sounds/KDE-Window-All-Desktops-Not.ogg/usr/share/sounds/KDE-Window-All-Desktops.ogg

Er zijn nog steeds een flink aantal overeenkomsten, maar we hoeven niet langer door alle extra resultaten te sorteren om te vinden wat we zoeken.

Belangrijke opmerking

Het locate commando vertrouwt op een slocate database om te kunnen functioneren. Deze database slaat de directory- en bestandsnamen van het bestandssysteem op en stelt het locate-commando in staat om in enkele ogenblikken te werken in plaats van lange tijd nodig te hebben om het hele bestandssysteem te doorzoeken.

Deze mogelijkheid komt echter niet zonder kosten. Standaard zal uw systeem één keer per dag om 6:25 uur een opdracht uitvoeren om de database bij te werken. Dit commando zal de database bijwerken met alle wijzigingen die in het bestandssysteem zijn aangebracht sinds de laatste update.

Als u onlangs wijzigingen hebt aangebracht, zoals grote hoeveelheden bestanden en mappen toegevoegd of verwijderd, en u wilt het locate-commando gebruiken om door deze nieuwe mappen en bestanden te zoeken, kunt u de slocate-database op elk moment handmatig bijwerken met het volgende commando:

$ sudo updatedb

Afhankelijk van de hoeveelheid wijzigingen die zijn aangebracht sinds de slocate-database voor het laatst werd bijgewerkt, kan dit een paar seconden tot een paar minuten duren om bij te werken. Zodra dit is gebeurd, bent u klaar om opnieuw te zoeken met locate.

die

locate is geweldig voor het doorzoeken van het gehele bestandssysteem. Soms wil je echter alleen maar vinden waar een commando staat. Dat is waar which in het spel komt.

which doet maar één ding, maar het doet het goed. Het geeft de naam van een commando, en vertelt u waar het bestand voor dat commando zich in het bestandssysteem bevindt.

Stellen we ons voor dat we willen weten waar het firefox commando zich bevindt. We kunnen gewoon het volgende uitvoeren om erachter te komen:

$ which firefox/usr/bin/firefox

Waarom zou u ooit specifiek naar een commando willen zoeken? Stel je voor dat je een code hebt die een oud commando moet vervangen. U moet echt eerst het oude verwijderen (ik hernoem het meestal naar dezelfde naam gevolgd door “.bak” om het te bewaren voor het geval ik het nodig heb) voordat u het nieuwe op zijn plaats zet. which zal u helpen het bestand snel en gemakkelijk te vinden zodat u niet overal hoeft te zoeken om het te vinden.

whereis

Het whereis commando is vergelijkbaar met which maar gaat een stap verder. Het vertelt je niet alleen waar het uitvoerbare bestand zich bevindt, maar het zal ook de broncode, man pagina, en andere geassocieerde directories lokaliseren.

Houden we het which voorbeeld, laten we whereis eens vragen naar het firefox commando:

$ whereis firefoxfirefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

Dit hielp me /usr/lib/firefox/plugins eerder te vinden toen ik aan de oplossing voor Flash werkte, omdat die locatie is waar de globale add-ons voor Firefox zijn opgeslagen.

find

find is het ultieme zoekgereedschap, het Zwitserse zakmes van Linux zoeken zo je wilt. find kan alles, van het zoeken naar bestanden op basis van laatst gewijzigde tijden, eigenaars en groepen, permissies, type (bestand, directory, symbolische link, etc), of het bestand leesbaar/schrijfbaar/uitvoerbaar is door de huidige gebruiker, bestandsgrootte, of het bestand of de directory leeg is, en nog veel meer. Je kunt ook zoeken op reguliere expressie.

Als je dit gereedschap gebruikt in combinatie met het xargs commando (dat ik een andere keer zal moeten behandelen), kun je echt verbazingwekkende dingen doen op de commandoregel. Stel je voor dat je in staat bent om recursief door de huidige directory te zoeken naar bestanden eindigend op “.bak” die meer dan 100 dagen geleden voor het laatst zijn gewijzigd en ze vervolgens met één commando te verwijderen:

$ find . -name '*.bak' -type f -mtime +100 -print0 | xargs -0 /bin/rm -f

Het ziet er in het begin erg complex uit, maar wanneer je de kunst van het gebruik van find onder de knie hebt, wordt het een tweede natuur. Binnenkort zult u zich afvragen hoe u ooit naar dingen hebt kunnen zoeken zonder

Om eerlijk te zijn, er is veel meer te vinden dan ik bereid ben te behandelen en er zijn vele, vele grote inleidingen tot het gereedschap die een beter werk doen dan ik zou doen. Ik zal u dus simpelweg wijzen op drie goede referenties die u kunt gebruiken om met find aan de slag te gaan.

  • Voorbeeldgebruik van het Linux commando find
  • (bij voorbaat excuses voor de afschuwelijke kleuren) Unix/Linux “find” Command Tutorial
  • Het gebruik van het commando find

Happy searching.

Heb ik je geholpen?

  • Stuur me een tip via Paypal.
  • Help met de hosting van deze site met mijn Linode doorverwijs code.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.