files – Busque nombres de archivos que no contengan una cadena específica

Pregunta:

Me gustaría ejecutar lo contrario de:

find . -name "*2013*"

Busque todos los archivos en el directorio actual que no contengan la cadena "2013" en sus nombres. ¿Cómo puedo hacer eso?

Respuesta:

Simplemente:

find . ! -name '*2013*'

Agregue un ! -type d para excluir también los archivos de tipo directorio (como . mismo), o -type f para incluir solo archivos normales , excluyendo todos los demás tipos de archivos (directorios, FIFos, symlinks, dispositivos, sockets …).

Sin embargo, tenga en cuenta que * coincide con una secuencia de 0 o más caracteres . Por lo tanto, podría informar nombres de archivos que contienen 2013 si ese 2013 fue precedido o seguido de algo que no se puede decodificar por completo como caracteres válidos en la configuración regional actual.

Eso puede suceder si se encuentra en una ubicación donde los caracteres se pueden codificar en más de un byte (como en UTF-8) para los nombres de archivo que están codificados en una codificación diferente. Por ejemplo, en una configuración regional UTF-8, reportaría un archivo Stéphane2013 si é hubiera codificado en el juego de caracteres iso8859-15 (como el byte 0xe9).

Lo mejor sería asegurarse de que los nombres de los archivos estén codificados en el conjunto de caracteres de la configuración regional, pero si no puede garantizarlo, una solución es ejecutar find en la configuración regional C:

LC_ALL=C find . ! -name '*2013*'

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım