Ayuda del script Bash, verifique el permiso 755 en todos los archivos en una carpeta

Ayuda del script Bash, verifique el permiso 755 en todos los archivos en una carpeta

Estoy intentando crear un script bash donde verifico si todos los archivos de una carpeta específica (/tmp) tienen el permiso 755. También lo necesito para eliminar todos los archivos que no tienen el valor de permiso 755.

Intenté esto hasta ahora sin suerte:

#!/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###"

¡Cualquier ayuda que puede proporcionar será muy apreciada! :-)

Respuesta1

El siguiente script debería hacer lo que usted desea: se ejecuta en el directorio al que lo está llamando:

#!/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###"

Respuesta2

Su guión podría consistir simplemente en:

#!/bin/bash
echo "Files with 755 permission:"
find . -perm 755
echo "Deleting all other files"
find . -not -perm 755 -delete
echo "Done"

Tenga en cuenta que eliminará archivos del directorio actual y todos los directorios debajo de él. También eliminará cualquier cosa que tenga un permiso distinto de 755 sin previo aviso, así que utilícelo con cuidado.

información relacionada