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*'