Bash スクリプトのヘルプ、フォルダー内のすべてのファイルの権限 755 をチェックする

Bash スクリプトのヘルプ、フォルダー内のすべてのファイルの権限 755 をチェックする

特定のフォルダー (/tmp) のすべてのファイルに権限 755 があるかどうかを確認する bash スクリプトを作成しようとしています。また、権限値が 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 以外の権限を持つものも警告なしに削除されるため、注意して使用してください。

関連情報