удалить фотографии из папки

удалить фотографии из папки

Я хочу удалить все фотографии из папки и сохранить оставшиеся файлы. Я поискал в Интернете и нашел кучу решений, таких как:

find . -type f -name "*.jpg" -delete

Да, все фотографии в формате jpeg, но главная проблема в том, что названия фотографий не заканчиваются расширением «.jpg».

Может ли кто-нибудь мне помочь?

решение1

это должно сделать

for i in *; do 
    TESTRESULT=$(file --mime-type -b "$i"); 
    if [ "$TESTRESULT" == "image/jpeg" ]; then 
        echo "$i"; 
    fi;
done

Если это распечатает нужные файлы, замените echo "$i"наrm "$i"

решение2

Хорошо, я нашел решение:

Попробуйте эту команду

find . -name "*.jpg" -delete

Я попробовал это на Xubuntu 14.04, и все отлично сработало. Надеюсь, это поможет!

Я знаю, что это похоже на ваш пример, но тот пример, который вы привели, не сработал для меня. Но это более простой однострочник.

решение3

Вот скрипт для удаления всех изображений:

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

Вы используете вторую часть выходных данных файла file "$file"и ищете imageв ней ключевое слово, а затем удаляете текущий файл в цикле.

Если вы также хотите удалить растровые изображения:

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

Связанный контент