Esta guía explica cómo encontrar y eliminar archivos que contengan un texto o cadena específicos en sus nombres usando el comando de búsqueda en Linux. Además, también aprenderemos a encontrar y eliminar archivos que "no" contienen texto específico en sus nombres.
Introducción
Tengo muchos archivos PDF que tienen algunos consejos y trucos importantes de Linux. Le di a esos archivos un nombre de archivo único para una identificación más fácil.
Digamos, por ejemplo, que guardé los archivos que contienen los detalles de configuración del servidor LDAP como ldapconfig.pdf , archivo de configuración FTP como ftpconfig.pdf , detalles de configuración del servidor DHCP como dhcp_config.pdf , y así.
Convertí la mayoría de ellos en artículos y los publiqué aquí en nuestro blog, para que otros usuarios también puedan beneficiarse de ellos.
El problema es que esos archivos consumen mucho espacio en disco. Dado que tengo cientos de archivos, no quiero buscarlos manualmente y eliminarlos uno por uno. Puede llevar algunas horas encontrar y eliminar todos los archivos.
Mientras buscaba una solución fácil, me di cuenta de que el comando "buscar" me puede ayudar en este caso. Después de revisar las páginas man del comando find, encontré una solución adecuada. Sigue leyendo.
1. Encuentre y elimine archivos que contengan un texto específico en sus nombres en Linux
Echa un vistazo al siguiente ejemplo. Tengo los siguientes archivos en un directorio llamado "Linux_guides" .
$ cd Linux_guides/
$ ls apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf apache_install.pdf ftp_config.pdf mysql_install.pdf
Completé la parte de la instalación, por lo que no necesito los archivos que contienen las palabras "instalar" en sus nombres de archivo.
En lugar de buscar y eliminar los archivos que contienen la frase "instalar" uno por uno, podemos eliminarlos todos a la vez usando el siguiente comando:
$ find -type f -name '*install*' -delete
El comando anterior eliminará todos los archivos que tengan la frase "instalar" a su nombre y conservar todo lo demás.
Si delete
opción no está disponible, puede usar cualquiera de los siguientes comandos:
$ find -type f -name '*install*' -exec rm {} \;
O,
$ find -type f -name '*install*' -exec rm {} +
Puede preguntar si podemos hacer lo mismo usando "rm"
comando como a continuación:
$ rm *install*
Sí, lo hará. Sin embargo, rm install
El comando eliminará todos los archivos que contengan "instalar" en el nombre de archivo del directorio actual y se quejará si algún nombre de directorio contiene "install"
.
Pero, el "find -type f"
El comando buscará recursivamente solo archivos en el directorio actual y todos los subdirectorios.
1.1. Encuentre archivos que contengan un texto específico en sus nombres en Linux
Si solo desea buscar archivos (no eliminarlos), elimine las opciones -delete
o -exec rm {} \;
o -exec rm {} +
en los comandos anteriores.
Por ejemplo, el siguiente comando solo encontrará los archivos que contienen la cadena "install"
en sus nombres:
$ $ find -type f -name '*install*'
Salida de muestra:
./mysql_install.pdf ./apache_install.pdf ./php_install.pdf
2. Buscar y eliminar archivos que "no" contienen texto específico en sus nombres en Linux
Sabe cómo eliminar un archivo que contiene una frase específica en su nombre. Veamos ahora cómo encontrar y eliminar archivos que no tienen una frase o cadena específica en sus nombres.
Para hacerlo, simplemente agregue '-not'
parámetro en el comando de búsqueda como se muestra a continuación.
$ find -type f -not -name '*install*' -delete
El comando anterior no se eliminará los archivos que tienen la frase "install"
en su nombre y borrar todo lo demás.
Si eliminar opción no está disponible, puede usar cualquiera de los siguientes comandos:
$ find -type f -not -name '*install*' -exec rm {} \;
O,
$ find -type f -not -name '*install*' -exec rm {} +
Para obtener más detalles sobre el comando de búsqueda, consulte las páginas man.
$ man find
Conclusión
Ahora sabe cómo encontrar un archivo que contiene un nombre específico en su nombre y cómo eliminar un archivo que tiene y no ha tenido una palabra específica en su nombre. Esto será útil cuando desee eliminar una gran cantidad de archivos del mismo tipo en un directorio.