Quiero eliminar todas las fotos de una carpeta y conservar los archivos restantes. Busqué en la web y encontré un montón de soluciones como:
find . -type f -name "*.jpg" -delete
Todas las fotos son jpeg, sí, pero el principal problema es que los nombres de las fotos no terminan en su extensión ".jpg".
¿Alguien podría ayudarme?
Respuesta1
esto debería hacer
for i in *; do
TESTRESULT=$(file --mime-type -b "$i");
if [ "$TESTRESULT" == "image/jpeg" ]; then
echo "$i";
fi;
done
Si eso imprime los archivos deseados, reemplácelo echo "$i"
conrm "$i"
Respuesta2
Bien, he encontrado una solución:
Prueba este comando
find . -name "*.jpg" -delete
Probé esto en Xubuntu 14.04 y funcionó bien. ¡Espero que esto ayude!
Sé que esto es similar a tu ejemplo, pero el ejemplo que diste no funcionó para mí. Pero esta es una frase más sencilla.
Respuesta3
Aquí hay un script para eliminar todas las imágenes:
userX@ubuntu:~$ cat removeImages.sh
#!/bin/bash
path=/home/userX/Downloads/*;
for file in $path
do
fileInfo=`file "$file" |awk -F: '{print $2}'`
if [[ $fileInfo =~ .*image.* ]]; then echo "Removing: " $file; rm $file; fi
done
Utiliza la segunda parte de file "$file"
la salida del archivo y busca image
la palabra clave en ella, y luego elimina el archivo actual en el bucle.
Si también desea eliminar mapas de bits:
userX@ubuntu:~$ cat removeImages.sh
#!/bin/bash
path=/home/userX/Downloads/*;
for file in $path
do
fileInfo=`file "$file" |awk -F: '{print $2}'`
if [[ $fileInfo =~ .*image.*]] || [[$fileInfo =~ .*bitmap.* ]];
then echo "Removing: " $file; rm $file; fi
done