Ecco alcuni esempi di cui possiamo trarre vantaggio quando ne facciamo uso Trovare, un comando per cercare file o cartelle.
Per ottenere aiuto per l'esecuzione del comando:
man find
per uscire dal manuale è sufficiente premere il tasto [Q] (valido per qualsiasi manuale).
Negli esempi seguenti il punto (.) Dopo find (find.) Significa che stiamo cercando nella cartella indicata dal prompt. Può essere sostituito con qualsiasi percorso valido come / home /.
Esempi:
Cerca solo i file con uno schema.
find . -type f -name "*.deb"
trova e copia in / home / pepe /
find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;
Trova i file Thumbs.db ed eliminali.
find . -type f -name "Thumbs.db" -exec rm -f {} \;
Crea un file di testo puro con i file md5 nella directory.
find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt
Elimina le fastidiose cartelle .svn.
find | grep "\.svn$" | xargs rm -fr
Sostituisci un testo con un altro.
find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php
Trova i file aggiornati fino a un giorno fa.
find /var/log/[a-z]* \*.sql -mtime +1
Per generare i file md5sums dei pacchetti DEB:
find . -type f ! -regex ‘.*\.hg.*’ ! -regex ‘.*?debian-binary.*’ ! -regex ‘.*?DEBIAN.*’ -printf ‘%P ‘ | xargs md5sum > DEBIAN/md5sums
elimina tutti i file diversi da .txt (ovviamente .txt può essere qualsiasi cosa)
trova. ! -name "* .txt" -exec rm {} \;
ricerca senza corrispondenze senza distinzione tra maiuscole e minuscole:
trova. -iname «* foobar *»
Nota: il comando -exec non può essere eseguito con il parametro -iname.
Eccellente 😉 questo comando dovrebbe essere obbligatorio sapere, prima che mi spaventassero le opzioni che esistevano in 'man' per poter fare ricerche, ma dandogli l'opportunità ho potuto vedere quanto sia potente quando si tratta di trovare ciò che ho dimenticato sul mio disco rigido 😐
Find è sicuramente utile, soprattutto per gestire nomi di file che includono spazi e altri caratteri insoliti. Ad esempio, una volta ricordo che non c'era modo di comprimere un insieme di directory, finché non mi è venuto in mente di usare find con xargs (che è molto più veloce di -exec tra l'altro) e il problema è stato risolto.
Un altro dei miei usi preferiti per il comando find è modificare in modo ricorsivo le autorizzazioni:
find . -type d -print0 | xargs -0 chmod 755
find . -type f -print0 | xargs -0 chmod 644
Interessante ^ _ ^
Quanto è bella l'icona dei Chakra hahahahahaha 😀
Mageia è scomparsa 🙂
Sì, giusto 😀
In questo momento mi metto in funzione di questo hehehehe. Grazie 🙂
E uno per la mia distribuzione ...
Grazie, i comandi molto utili, ho un dubbio ricordo che in Ubuntu una volta ho usato il comando Locate, è un alias di find o ...?
Negativo. individuare, mlocare y rallentare sono altri comandi di ricerca che a differenza di Find, utilizzano un database che deve essere periodicamente aggiornato con il comando aggiornato b.
Entrambi i tipi di comandi hanno i loro usi. Ad esempio, di solito uso aggiornato b seguito da mlocareindividuare quando voglio davvero trovare qualcosa di veloce in una directory con molti dati che so non vengono aggiornati troppo frequentemente (ad esempio, un pacchetto in un repository), e Find quando voglio fare qualcosa di più complesso come combinare i risultati della ricerca con un altro comando, o quando semplicemente non voglio generare il database perché so che la directory in cui cercherò non contiene troppe informazioni.
Grazie mille Hugo, ottima spiegazione, posso solo dire quanto è potente il terminale in gnu / linux!
Ciao, vedo che questo è un vecchio argomento, ma spero che tu possa ancora aiutarmi.
Sto imparando a usare la regexp da quando ho visto un documento e sto cercando le parole error o fail e i loro derivati errori o fail o failure ecc. E la mia regexp è:
: / \ (. * \ (errore | fail \). * \) /
Quando lo eseguo, mi dice che non ci sono corrispondenze 🙁 ma a
:/\(.*\(errore\).*\)/
o
: / \ (. * \ (fallire \). * \) /
Se trovi delle corrispondenze, potresti dirmi come mi sbaglio?
Qual è la linea completa che stai mettendo?
Per testare e vedere se trovo la soluzione.
D'altra parte, comunque se vuoi puoi controllare qui: https://blog.desdelinux.net/?s=expresiones+regulares
Per favore aiutami, voglio copiare i file che terminano con * _ZFIR0069.TXT in un altro percorso e aggiungere una data alla fine, sto eseguendo un comando:
data = $ (data + »% Y% m% d%»)
trova / xcom_rep / FATF / exit / 42 -name * _ZFIR0069.TXT -exec cp -p {} / backup / FATF / exit / 42 / {} _ $ date \;
Ma il risultato è:
{} _20160225% -> ma copia solo un file di tutti e viene rinominato in questo modo
Quello che voglio è che copi tutti i file e abbia questo formato * _ZFIR0069_ $ date .TXT
Saluti.
Qual è la differenza tra find * -type de find / home / pepe -type d? Voglio elencare le directory del mio account e non capisco perché il primo lo fa correttamente e il secondo no. aiutare
Come posso trovare file che finiscono in numeri? Grazie