Помогите bash script, проверьте разрешение 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###"

Любая помощь, которую вы можете оказать, будет принята с благодарностью! : -)

4
задан 26 April 2016 в 13:37

2 ответа

Следующий сценарий должен сделать то, что Вы хотите: это работает в каталоге, который Вы называете им:

#!/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###"
0
ответ дан 26 April 2016 в 23:37

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

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

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

0
ответ дан 26 April 2016 в 23:37

Другие вопросы по тегам:

Похожие вопросы: