Co terminal: exemplos co comando Buscar

Aquí tes algúns exemplos que podemos aproveitar cando usamos Buscar, un comando para buscar ficheiros ou cartafoles.

Para obter a axuda do comando executado:

man find

para deixar o manual, só tes que premer a tecla [q] (válido para calquera manual).

Nos seguintes exemplos, o punto (.) Despois de atopar (atopar.) Significa que estamos a buscar no cartafol indicado pola solicitude. Pode substituírse por calquera camiño válido como / home /.

Exemplos:

Só ten que buscar ficheiros cun patrón.
find . -type f -name "*.deb"

buscar e copiar en / home / pepe /
find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;

Busque os ficheiros Thumbs.db e elimínelos.
find . -type f -name "Thumbs.db" -exec rm -f {} \;

Crea un ficheiro de texto puro cos ficheiros md5 no directorio.
find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt

Eliminar molestos cartafoles .svn.
find | grep "\.svn$" | xargs rm -fr

Substitúe un texto por outro.
find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php

Buscar ficheiros actualizados ata hai un día.
find /var/log/[a-z]* \*.sql -mtime +1

Para xerar os ficheiros md5sums dos paquetes DEB:
find . -type f ! -regex ‘.*\.hg.*’ ! -regex ‘.*?debian-binary.*’ ! -regex ‘.*?DEBIAN.*’ -printf ‘%P ‘ | xargs md5sum > DEBIAN/md5sums


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

16 comentarios, deixa os teus

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.

  1.   axeitado dixo

    eliminar todos os ficheiros que non sexan .txt (obviamente .txt pode ser calquera cousa)
    atopar. ! -nome "* .txt" -exec rm {} \;

    buscar sen coincidencias que non distingan entre maiúsculas e minúsculas:
    atopar. -nome «* foobar *»

    Observación: o comando -exec non se pode executar co parámetro -iname.

  2.   taregón dixo

    Excelente 😉 este comando debería ser obrigatorio sabelo, antes de que me asustara as opcións que había en "home" para poder facer buscas, pero dándolle a oportunidade puiden ver o poderoso que é á hora de atopar o que esquecín no meu disco duro 😐

  3.   Hugo dixo

    A procura é certamente útil, especialmente para tratar con nomes de ficheiros que inclúen espazos e outros personaxes pouco comúns. Por exemplo, lembrei unha vez que non había forma de comprimir un conxunto de directorios, ata que se me ocorreu usar find con xargs (que por certo é moito máis rápido que -exec) e o problema resolveuse.

    Outro dos meus usos preferidos para o comando find é cambiar recursivamente os permisos:


    find . -type d -print0 | xargs -0 chmod 755
    find . -type f -print0 | xargs -0 chmod 644

  4.   electrón222 dixo

    Interesante ^ _ ^

    1.    KZKG ^ Gaara dixo

      Que chulo parece a icona do Chakra jajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaja

      1.    sieg84 dixo

        Falta Mageia 🙂

        1.    KZKG ^ Gaara dixo

          Si, ben 😀
          Agora mesmo póñome en función deste hehehehe. Grazas 🙂

          1.    lesterzone dixo

            E un para a miña distribución ...

  5.   Arqueiro dixo

    Grazas, os comandos son moi útiles, teño a dúbida de que recordo que en Ubuntu unha vez usei o comando find, é algún alias de find ou ...?

    1.    Hugo dixo

      Negativo atopar, mlocalizar y situar son outros comandos de busca que a diferenza de atopar, usan unha base de datos que precisa actualizarse periodicamente co comando actualizadob.

      Os dous tipos de comandos teñen o seu uso. Eu por exemplo adoito usar actualizadob seguido por mlocalizarlocalizar cando realmente quero atopar algo rápido nun directorio con moitos datos que sei que non se actualizan con demasiada frecuencia (por exemplo, un paquete nun repositorio) e atopar cando quero facer algo máis complexo como combinar os resultados da busca con outro comando ou cando simplemente non quero xerar a base de datos porque sei que o directorio no que vou buscar non contén demasiada información.

      1.    Arqueiro dixo

        Moitas grazas Hugo, excelente explicación, só podo dicir o poderoso que é o terminal en gnu / linux.

  6.   Sandra dixo

    Ola, vexo que este é un tema antigo, pero espero que poidas axudarme.

    Estou aprendendo a usar a expresión regular desde que vin un documento e estou a buscar as palabras error ou fail e os seus derivados erros ou fallen ou fallo, etc.
    : / \ (. * \ (erro | falla \). * \) /
    Ao executalo, dime que non hai coincidencias 🙁 senón para
    : / \ (. * \ (erro \). * \) /
    o
    : / \ (. * \ (fallar \). * \) /
    Se atopas coincidencias, poderías dicirme como me equivoco?

    1.    KZKG ^ Gaara dixo

      Cal é a liña completa que estás poñendo?

      Para probar e ver se atopo a solución.

      Por outra banda, de todos os xeitos se queres podes comprobar aquí: https://blog.desdelinux.net/?s=expresiones+regulares

  7.   Estefani dixo

    Por favor, axúdame, quero copiar os ficheiros que rematen en * _ZFIR0069.TXT a outro camiño e engadir unha data ao final, estou facendo un comando:

    data = $ (data + »% Y% m% d%»)
    find / xcom_rep / FATF / exit / 42 -name * _ZFIR0069.TXT -exec cp -p {} / backup / FATF / exit / 42 / {} _ $ date \;

    Pero o resultado é:

    {} _20160225% -> pero só copia un ficheiro de todos e así renoméase

    O que quero é que copie todos os ficheiros e teña este formato * _ZFIR0069_ $ date .TXT

    Saúdos.

  8.   pepG dixo

    Cal é a diferenza entre find * -type d e find / home / pepe -type d? Quero enumerar os directorios da miña conta e non entendo por que o primeiro o fai correctamente e o segundo non. axuda a

  9.   kaike dixo

    Como podo atopar ficheiros que rematan en números? Grazas