Bash-Skript-Hilfe, überprüfen Sie die Berechtigung 755 für alle Dateien in einem Ordner

Bash-Skript-Hilfe, überprüfen Sie die Berechtigung 755 für alle Dateien in einem Ordner

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.

verwandte Informationen