¿Eliminar todos los archivos cuyos nombres de archivo contienen una cadena particular?

22

Cambié mi tema de WordPress. El anterior creó muchas imágenes en el servidor. Mi nuevo tema no los necesita, así que quiero eliminarlos todos. ¿Cómo puedo hacer eso?

Por ejemplo:
Imagen predeterminada:12_angry_men_lone_holdout.jpg

Quiero borrar:

12_angry_men_lone_holdout-290x166.jpg
12_angry_men_lone_holdout-700x300.jpg 
12_angry_men_lone_holdout-50x50.jpg

Usando Digitalocean, Ubuntu 13.10.

Ibrahim Mumcu
fuente
en un tipo de terminal man rmpara ver la página del manual del comando rm.
hmayag
Parece que estas imágenes son las miniaturas creadas automáticamente a partir de imágenes cargadas en su biblioteca multimedia de WorldPress. Si es así, no elimine esos archivos en la terminal del servidor. Abra su página de administrador de WordPress, abra 'Configuración'> 'Medios'. Establezca los tamaños de imagen en miniatura deseados allí. Luego, instale el complemento Regenerar miniaturas y vuelva a crear todas las miniaturas (puede tardar unos minutos, dependiendo de la cantidad de imágenes en su biblioteca de medios).
Bob

Respuestas:

22

Si están en la misma carpeta, use * comodín para lograr eso:

rm *text*

¿Dónde textestá la cadena que contiene ese nombre de archivo?

myhau
fuente
En realidad no es un directorio, pero puedo hacerlo por uno por ahora. ¡Gracias!
Ibrahim Mumcu
27

Úselo findpara buscar y eliminar de forma recursiva archivos con "texto" en sus nombres:

find -type f -name '*text*' -delete

También es posible que desee ejecutar find -type f -name '*text*'(sin el -delete) antes de eso para asegurarse de que no eliminará los archivos que no tenía la intención de eliminar.


De hecho, puede colocar comodines en cualquier lugar de la cadena de búsqueda, por lo que -name '12_angry_men_lone_holdout-*.jpg'podría ser más adecuado en su caso.

n.st
fuente
¿No es necesario representar la ruta del archivo
Avinash Raj
@AvinashRaj Si el primer parámetro no es una ruta, findbusca en el directorio de trabajo actual.
n.st
Alguien lo puso. justo después de buscar para buscar dentro del directorio de trabajo actual.
Avinash Raj
1
@AvinashRaj Eso sería redundante. Según man find: Si no se dan rutas, se utiliza el directorio actual.
n.st
@AvinashRaj Resulta que el POSIX especificación findrealidad no requerir un camino. El valor predeterminado .es una modificación agregada por GNU find. Si esto fuera Unix y Linux , agregaría eso a mi respuesta, pero como Ubuntu viene con GNU find por defecto, prefiero no confundir a los recién llegados más de lo necesario. ;)
n.st
1

Prueba esto:

rm -rf 12_angry_men_lone_holdout-*

Esto keep 12_angry_men_lone_holdout.jpgeliminará y eliminará archivos con dimensiones (290x166)

Y por favor recuerda

rm -rf 12_angry_men_lone_holdout.*

también eliminará el archivo predeterminado que necesitabas.

Aneesh
fuente
0
find . -type f -name '*[0-9]x[0-9]*' -delete

Ejecute esto en el directorio principal. Esto eliminará todos los archivos que tengan un dígito seguido de un carácter 'x' seguido de otro dígito en su nombre.

Aún así, tenga cuidado, esto también podría eliminar archivos originales, si su nombre contiene el patrón anterior (poco probable). Ejecútelo primero sin '-delete' para ver si tiene algún archivo con ese nombre. Si ese es el caso, solo necesitará encontrar un patrón más restrictivo.

Tamas
fuente