Я хочу удалить все фотографии из папки и сохранить оставшиеся файлы. Я поискал в Интернете и нашел кучу решений, таких как:
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