フォルダから写真を削除する

フォルダから写真を削除する

フォルダーからすべての写真を削除し、残りのファイルを保持したいです。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

関連情報