Ich versuche, ein Bash-Skript zu erstellen, mit dem ich überprüfe, ob alle Dateien eines bestimmten Ordners (/tmp) die Berechtigung 755 haben. Ich brauche es auch, um alle Dateien zu löschen, die nicht den Berechtigungswert 755 haben.
Ich habe dies bisher ohne Erfolg versucht:
#!/bin/bash
for filename in 'ls'
do
if [ -perm 0755 "$filename" ]
then echo "Files with 755 permission: $filename"
else rm "$filename"
fi
done
echo "###DONE###"
Wir sind für jede Hilfe sehr dankbar! :-)
Antwort1
Das folgende Skript sollte tun, was Sie möchten: Es wird in dem Verzeichnis ausgeführt, in dem Sie es aufrufen:
#!/bin/bash
echo "###START###"
for filename in *
do
if [ $(stat -c "%a" "$filename") == "755" ]
then
echo "Files with 755 permission: $filename"
else
echo "REMOVING: $filename"
rm "$filename"
fi
done
echo "###DONE###"
Antwort2
Ihr Skript könnte einfach aus Folgendem bestehen:
#!/bin/bash
echo "Files with 755 permission:"
find . -perm 755
echo "Deleting all other files"
find . -not -perm 755 -delete
echo "Done"
Beachten Sie, dass Dateien aus dem aktuellen Verzeichnis und allen darunter liegenden Verzeichnissen gelöscht werden. Außerdem werden alle Dateien mit einer anderen Berechtigung als 755 ohne Warnung gelöscht. Gehen Sie daher mit Vorsicht vor.