Hier zijn enkele voorbeelden waarvan we kunnen profiteren wanneer we ze gebruiken VIND DE PLEK DIE PERFECT VOOR JOU IS, een commando om naar bestanden of mappen te zoeken.
Om hulp te krijgen bij het uitvoeren van de opdracht:
man find
Om de handleiding te verlaten, drukt u gewoon op de toets [Q] (geldig voor elke handleiding).
In de volgende voorbeelden betekent de punt (.) Na find (find.) Dat we zoeken in de map die wordt aangegeven door de prompt. Het kan worden vervangen door elk geldig pad zoals / home /.
Voorbeelden:
Zoek gewoon naar bestanden met een patroon.
find . -type f -name "*.deb"
zoek en kopieer naar / home / pepe /
find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;
Zoek de Thumbs.db-bestanden en verwijder ze.
find . -type f -name "Thumbs.db" -exec rm -f {} \;
Maak een puur tekstbestand met de md5-bestanden in de directory.
find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt
Verwijder vervelende .svn-mappen.
find | grep "\.svn$" | xargs rm -fr
Vervang de ene tekst door de andere.
find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php
Vind bestanden die tot een dag geleden zijn bijgewerkt.
find /var/log/[a-z]* \*.sql -mtime +1
Om de md5sums-bestanden van de DEB-pakketten te genereren:
find . -type f ! -regex ‘.*\.hg.*’ ! -regex ‘.*?debian-binary.*’ ! -regex ‘.*?DEBIAN.*’ -printf ‘%P ‘ | xargs md5sum > DEBIAN/md5sums
verwijder alle bestanden behalve .txt (uiteraard kan .txt van alles zijn)
vind. ! -naam "* .txt" -exec rm {} \;
zoeken zonder hoofdletterongevoelige overeenkomsten:
vind. -iname «* foobar *»
Opmerking: het -exec commando kan niet uitgevoerd worden met de -iname parameter.
Uitstekend 😉 dit commando zou verplicht moeten zijn om te weten, voordat ik bang werd voor de opties die in 'man' bestonden om zoekopdrachten te kunnen doen, maar als ik het de kans gaf, kon ik zien hoe krachtig het is als het gaat om het vinden van wat ik ben vergeten op mijn harde schijf 😐
Zoeken is zeker handig, vooral voor het omgaan met bestandsnamen die spaties en andere ongebruikelijke tekens bevatten. Ik herinnerde me bijvoorbeeld eens dat ik op geen enkele manier een set mappen kon comprimeren, totdat het bij me opkwam om find te gebruiken met xargs (wat trouwens veel sneller is dan -exec), en het probleem was opgelost.
Een ander een van mijn favoriete toepassingen voor de opdracht find is om de machtigingen recursief te wijzigen:
find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644
Interessant ^ _ ^
Hoe cool het Chakra-pictogram ziet, hahahahahaha 😀
Mageia ontbreekt 🙂
Yep rechts 😀
Op dit moment ben ik gebaseerd op deze hehehehe. Bedankt 🙂
En een voor mijn distro ...
Bedankt, de commando's zijn erg handig, ik twijfel eraan dat ik me herinner dat ik in Ubuntu ooit het lokaliseer-commando heb gebruikt, is het een alias van find of ...
Negatief. plaatsen, lokaliseren y plaats zijn andere zoekopdrachten die anders zijn dan vinden, gebruiken ze een database die periodiek moet worden bijgewerkt met de opdracht bijgewerktb.
Beide soorten commando's hebben hun toepassingen. Ik gebruik bijvoorbeeld meestal bijgewerktb gevolgd door lokaliserenlokaliseren wanneer ik echt iets snel wil vinden in een map met veel gegevens waarvan ik weet dat ze niet te vaak worden bijgewerkt (bijvoorbeeld een pakket in een repository), en vinden als ik iets ingewikkelder wil doen, zoals de zoekresultaten combineren met een ander commando, of als ik de database gewoon niet wil genereren omdat ik weet dat de directory waarin ik ga zoeken niet te veel informatie bevat.
Heel erg bedankt Hugo, uitstekende uitleg, ik kan alleen maar zeggen hoe krachtig de terminal is in gnu / linux!
Hallo, ik zie dat dit een oud onderwerp is, maar hopelijk kun je me nog steeds helpen.
Ik leer de regexp te gebruiken sinds ik zag dat ik een document heb en ik zoek naar de woorden fout of mislukt en de afgeleide fouten of mislukt of mislukt enz. En mijn regexp is:
: / \ (. * \ (fout | mislukt \). * \) /
Bij het uitvoeren vertelt het me dat er geen overeenkomsten zijn 🙁 maar to
:/\(.*\(fout\).*\)/
o
: / \ (. * \ (mislukt \). * \) /
Als je overeenkomsten vindt, kun je me dan vertellen dat ik het mis heb?
Wat is de volledige regel die u zet?
Om te testen en te zien of ik de oplossing vind.
Aan de andere kant, als je wilt, kun je hier kijken: https://blog.desdelinux.net/?s=expresiones+regulares
Help me alstublieft, ik wil de bestanden die eindigen op * _ZFIR0069.TXT naar een ander pad kopiëren en aan het einde een datum toevoegen, ik voer een commando uit:
date = $ (date + »% Y% m% d%»)
find / xcom_rep / FATF / exit / 42 -name * _ZFIR0069.TXT -exec cp -p {} / backup / FATF / exit / 42 / {} _ $ date \;
Maar het resultaat is:
{} _20160225% -> maar het kopieert slechts één van alle bestanden en de naam wordt op die manier gewijzigd
Wat ik wil is dat het alle bestanden kopieert en dit formaat heeft * _ZFIR0069_ $ date .TXT
Groeten.
Wat is het verschil tussen zoek * -type d en zoek / home / pepe -type d? Ik wil de mappen van mijn account vermelden en ik begrijp niet waarom de eerste het correct doet en de tweede niet. helpen om
Hoe kan ik bestanden vinden die eindigen op cijfers?