Ich möchte alle Fotos aus einem Ordner löschen und die restlichen Dateien behalten. Ich habe im Internet gesucht und jede Menge Lösungen gefunden, wie zum Beispiel:
find . -type f -name "*.jpg" -delete
Zwar sind alle Fotos im JPEG-Format, das Hauptproblem besteht jedoch darin, dass die Namen der Fotos nicht mit der Erweiterung „.jpg“ enden.
Kann mir jemand helfen?
Antwort1
das sollte reichen
for i in *; do
TESTRESULT=$(file --mime-type -b "$i");
if [ "$TESTRESULT" == "image/jpeg" ]; then
echo "$i";
fi;
done
Wenn die gewünschten Dateien gedruckt werden, ersetzen Sie echo "$i"
durchrm "$i"
Antwort2
Okay, ich habe eine Lösung gefunden:
Versuchen Sie diesen Befehl
find . -name "*.jpg" -delete
Ich habe dies auf Xubuntu 14.04 ausprobiert und es hat gut funktioniert. Ich hoffe, das hilft!
Ich weiß, dass dies Ihrem Beispiel ähnlich ist, aber das Beispiel, das Sie gegeben haben, hat bei mir nicht funktioniert. Aber das hier ist ein einfacherer Einzeiler.
Antwort3
Hier ist ein Skript zum Entfernen aller Bilder:
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
Sie verwenden den zweiten Teil der Dateiausgabe , suchen darin file "$file"
nach Schlüsselwörtern und entfernen dann die aktuelle Datei in der Schleife.image
Wenn Sie auch Bitmaps entfernen möchten:
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