Я хочу удалить все фотографии из папки и сохранить остающиеся файлы. Я искал в сети, и я нашел тонны решений как:
find . -type f -name "*.jpg" -delete
Все фотографии являются jpeg, да, но основная проблема состоит в том, что названия фотографии не заканчиваются своим расширением ".jpg".
Кто-либо мог помочь мне?
это должно сделать
for i in *; do
TESTRESULT=$(file --mime-type -b "$i");
if [ "$TESTRESULT" == "image/jpeg" ]; then
echo "$i";
fi;
done
, Если это печатает желаемые файлы, замените echo "$i"
rm "$i"
Вот сценарий для удаления всех изображений:
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
Хорошо я нашел решение:
Попытка эта команда
find . -name "*.jpg" -delete
я попробовал это на Xubuntu 14.04, и это хорошо работало. Я надеюсь, что это помогает!
я знаю, что это подобно Вашему примеру, но пример, который Вы дали, не работал на меня. Но это - более простой один лайнер.