Помощь по скрипту Bash, проверка прав 755 для всех файлов в папке

Помощь по скрипту Bash, проверка прав 755 для всех файлов в папке

Я пытаюсь создать bash-скрипт, который проверяет, имеют ли все файлы определенной папки (/tmp) разрешение 755. Мне также нужно, чтобы он удалял все файлы, которые не имеют разрешения 755.

Я пытался сделать это до сих пор, но безуспешно:

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

Любая ваша помощь будет высоко оценена! :-)

решение1

Следующий скрипт должен делать то, что вам нужно: он запускается в каталоге, из которого вы его вызываете:

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

решение2

Ваш сценарий может просто состоять из:

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

Обратите внимание, что он удалит файлы из текущего каталога и всех каталогов в нем. Он также удалит все с разрешением, отличным от 755, без предупреждения, поэтому используйте его осторожно.

Связанный контент