我想从文件夹中删除所有照片并保留剩余文件。我在网上搜索并找到了很多解决方案,例如:
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