Her er nogle eksempler, som vi kan drage fordel af, når vi bruger Finde, en kommando til at søge efter filer eller mapper.
For at få hjælp til kommandokørslen:
man find
for at forlade manualen skal du blot trykke på tasten [Q] (gælder for enhver manual).
I de følgende eksempler betyder perioden (.) Efter find (find.) Betyder, at vi ser i den mappe, der er angivet med prompten. Det kan erstattes af enhver gyldig sti som / home /.
Eksempler:
Bare søg efter filer med et mønster.
find . -type f -name "*.deb"
find og kopier til / home / pepe /
find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;
Find Thumbs.db-filerne, og slet dem.
find . -type f -name "Thumbs.db" -exec rm -f {} \;
Opret en ren tekstfil med md5-filerne i biblioteket.
find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt
Slet irriterende .svn-mapper.
find | grep "\.svn$" | xargs rm -fr
Erstat en tekst med en anden.
find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php
Find filer opdateret for op til en dag siden.
find /var/log/[a-z]* \*.sql -mtime +1
Sådan genereres md5sums-filerne i DEB-pakkerne:
find . -type f ! -regex ‘.*\.hg.*’ ! -regex ‘.*?debian-binary.*’ ! -regex ‘.*?DEBIAN.*’ -printf ‘%P ‘ | xargs md5sum > DEBIAN/md5sums
slet alle andre filer end .txt (selvfølgelig .txt kan være hvad som helst)
finde. ! -navn "* .txt" -exec rm {} \;
søg uden store og små bogstaver:
finde. -navn «* foobar *»
Bemærk: kommandoen -exec kan ikke udføres med parameteren -iname.
Fremragende 😉 denne kommando burde være obligatorisk at vide, før jeg var bange for de muligheder, der eksisterede i 'mennesket' for at kunne foretage søgninger, men ved at give det muligheden kunne jeg se, hvor kraftig det er, når det kommer til at finde det, jeg har glemt på min harddisk 😐
Find er bestemt nyttigt, især til behandling af filnavne, der indeholder mellemrum og andre usædvanlige tegn. For eksempel husker jeg engang, at der ikke var nogen måde, jeg kunne klare at komprimere et sæt mapper, før det faldt mig op at bruge find med xargs (hvilket forresten er meget hurtigere end -exec), og problemet blev løst.
En anden af mine foretrukne anvendelser til findkommandoen er at rekursivt ændre tilladelser:
find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644
Interessant ^ _ ^
Hvor sejt Chakra-ikonet ser ud hahahahahaha 😀
Mageia mangler 🙂
Yup højre 😀
Lige nu er jeg baseret på dette hehehehe. Tak 🙂
Og en til min distro ...
Tak, kommandoerne meget nyttige, jeg er i tvivl om, at jeg husker, at jeg i Ubuntu engang brugte lokaliseringskommandoen, er det noget alias for find eller ...?
Negativ. lokalisere, mlocate y skifte er andre søgekommandoer, der i modsætning til find, de bruger en database, der regelmæssigt skal opdateres med kommandoen opdateretb.
Begge typer kommandoer har deres anvendelser. Jeg bruger for eksempel normalt opdateretb efterfulgt af mlocatefind, når jeg virkelig vil søge efter noget hurtigt i en mappe med en masse data, som jeg ved ikke opdateres for ofte (for eksempel en pakke i et arkiv), og find når jeg vil gøre noget mere komplekst som at kombinere søgeresultaterne med en anden kommando, eller når jeg bare ikke ønsker at generere databasen, fordi jeg ved, at den mappe, hvor jeg skal søge, ikke indeholder for meget information.
Mange tak Hugo, fremragende forklaring, jeg kan kun sige, hvor kraftig terminalen er i GNU / Linux!
Hej, jeg ser dette er et gammelt emne, men forhåbentlig kan du stadig hjælpe mig.
Jeg lærer at bruge regexp, da jeg så et dokument, og jeg leder efter ordene error or fail og dets afledte fejl eller failed or failure osv. Og min regexp er:
: / \ (. * \ (fejl | mislykkes \). * \) /
Når det udføres, fortæller det mig, at der ikke er nogen matches 🙁 men til
:/\(.*\(fejl\).*\)/
o
: / \ (. * \ (mislykkes \). * \) /
Hvis du finder matches, kan du fortælle mig, hvordan jeg tager fejl?
Hvad er den fulde linje, du lægger?
At teste og se om jeg finder løsningen.
På den anden side kan du alligevel kontrollere her, hvis du vil: https://blog.desdelinux.net/?s=expresiones+regulares
Hjælp mig venligst, jeg vil kopiere filerne, der slutter med * _ZFIR0069.TXT til en anden sti og tilføje en dato til slutningen, jeg laver en kommando:
dato = $ (dato + »% Y% m% d%»)
find / xcom_rep / FATF / exit / 42 -name * _ZFIR0069.TXT -exec cp -p {} / backup / FATF / exit / 42 / {} _ $ date \;
Men resultatet er:
{} _20160225% -> men den kopierer kun en fil af alle, og den omdøbes på den måde
Hvad jeg ønsker er, at det kopierer alle filerne og har dette format * _ZFIR0069_ $ dato. TXT
Greetings.
Hvad er forskellen mellem find * -type d og find / home / pepe -type d? Jeg vil have en liste over mapperne på min konto, og jeg forstår ikke, hvorfor den første gør det korrekt, og den anden ikke. hjælp til
Hvordan kan jeg finde filer, der ender med tal? Tak