フォルダーからすべての写真を削除し、残りのファイルを保持したいです。Web で検索したところ、次のような解決策がたくさん見つかりました。
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"
出力の 2 番目の部分を使用して、その中でキーワードを検索し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