Iată câteva exemple de care putem profita atunci când folosim Găsi, o comandă pentru a căuta fișiere sau foldere.
Pentru a obține ajutor pentru executarea comenzii:
man find
pentru a ieși din manual, trebuie doar să apăsați tasta [Q] (valabil pentru orice manual).
În exemplele următoare, punctul (.) După găsire (găsire) înseamnă că căutăm în folderul indicat de prompt. Poate fi înlocuit cu orice cale validă precum / home /.
Exemple:
Căutați doar fișiere cu un model.
find . -type f -name "*.deb"
găsiți și copiați în / home / pepe /
find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;
Găsiți fișierele Thumbs.db și ștergeți-le.
find . -type f -name "Thumbs.db" -exec rm -f {} \;
Creați un fișier text pur cu fișierele md5 din director.
find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt
Ștergeți dosarele enervante .svn.
find | grep "\.svn$" | xargs rm -fr
Înlocuiți un text cu altul.
find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php
Găsiți fișiere actualizate până acum o zi.
find /var/log/[a-z]* \*.sql -mtime +1
Pentru a genera fișierele md5sums ale pachetelor DEB:
find . -type f ! -regex ‘.*\.hg.*’ ! -regex ‘.*?debian-binary.*’ ! -regex ‘.*?DEBIAN.*’ -printf ‘%P ‘ | xargs md5sum > DEBIAN/md5sums
ștergeți toate fișierele, altele decât .txt (evident .txt poate fi orice)
găsi. ! -nume "* .txt" -exec rm {} \;
căutați fără potriviri care să nu distingă majusculele / minusculele:
găsi. -nume «* foobar *»
Observație: comanda -exec nu poate fi executată cu parametrul -iname.
Excelent 😉 această comandă ar trebui să fie obligatoriu de cunoscut, înainte să mă sperie opțiunile care existau în „om” pentru a putea face căutări, dar oferindu-i ocazia am putut vedea cât de puternică este atunci când vine vorba de a găsi ceea ce am uitat. pe hard diskul meu 😐
Găsirea este cu siguranță utilă, în special pentru a trata nume de fișiere care includ spații și alte personaje neobișnuite. De exemplu, îmi amintesc o dată că nu am reușit să comprim un set de directoare, până când mi-a trecut prin cap să folosesc find cu xargs (care este mult mai rapid decât -exec de altfel) și problema rezolvată.
O altă dintre utilizările mele preferate pentru comanda find este schimbarea recursivă a permisiunilor:
find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644
Interesant ^ _ ^
Cât de mișto arată pictograma Chakra hahahahahaha 😀
Mageia lipsește 🙂
Da, bine 😀
Chiar acum mă bazez pe acest hehehehe. Mulțumesc 🙂
Și unul pentru distribuția mea ...
Mulțumesc, comenzile sunt foarte utile, am îndoială că îmi amintesc că în Ubuntu am folosit odată comanda de localizare, este un alias de găsire sau ...?
Negativ. localiza, mlocate y aloca sunt alte comenzi de căutare care spre deosebire de găsi, utilizează o bază de date care trebuie actualizată periodic cu comanda actualizatb.
Ambele tipuri de comenzi își utilizează. De exemplu, eu folosesc de obicei actualizatb urmat de mlocatelocalizați când doresc cu adevărat să caut ceva rapid într-un director cu o mulțime de date despre care știu că nu sunt actualizate prea frecvent (de exemplu, un pachet într-un depozit) și găsi atunci când vreau să fac ceva mai complex, cum ar fi combinarea rezultatelor căutării cu o altă comandă sau când nu vreau să generez baza de date, deoarece știu că directorul în care urmează să caut nu conține prea multe informații.
Mulțumesc foarte mult Hugo, explicație excelentă, pot spune doar cât de puternic este terminalul în gnu / linux!
Bună, văd că acesta este un subiect vechi, dar sper să mă puteți ajuta.
Învăț să folosesc regexp de când am văzut un document și caut cuvintele error sau fail și erorile derivate ale acestora sau fail sau fail etc și regexp-ul meu este:
: / \ (. * \ (eroare | eșec \). * \) /
Când îl execut, îmi spune că nu există meciuri 🙁 decât la
:/\(.*\(eroare\).*\)/
o
: / \ (. * \ (fail \). * \) /
Dacă găsiți potriviri, mi-ați putea spune cum greșesc?
Care este linia completă pe care o puneți?
Pentru a testa și a vedea dacă găsesc soluția.
Pe de altă parte, oricum, dacă doriți, puteți verifica aici: https://blog.desdelinux.net/?s=expresiones+regulares
Vă rog să mă ajutați, vreau să copiez fișierele care se termină cu * _ZFIR0069.TXT într-o altă cale și să adaug o dată la final, fac o comandă:
data = $ (data + »% Y% m% d%»)
găsi / xcom_rep / FATF / exit / 42 -name * _ZFIR0069.TXT -exec cp -p {} / backup / FATF / exit / 42 / {} _ $ date \;
Dar rezultatul este:
{} _20160225% -> dar copiază doar un fișier din toate și este redenumit în acest fel
Ceea ce vreau este să copieze toate fișierele și să aibă acest format * _ZFIR0069_ $ date .TXT
Salutări.
Care este diferența dintre find * -tip d și find / home / pepe -type d? Vreau să listez directoarele contului meu și nu înțeleg de ce primul îl face corect, iar al doilea nu. ajuta la
Cum pot găsi fișiere care se termină în cifre? Mulțumesc