Shell-Script

如何檢查和分配 shell 腳本文件的執行權限?

  • July 27, 2021

我正在尋找編寫一個 .sh 腳本來為目前目錄和子目錄中尚未分配執行權限的所有 .sh 文件分配執行權限。

只需一個命令,我就可以輕鬆地為目前目錄及其子目錄中包含的所有 .sh 文件分配執行權限:

find -type f -iname '*.sh' -exec chmod +x {} \;

上述命令將為位於目前目錄和子目錄中的所有 .sh 文件分配執行權限。但是我只需要條件語句來檢查這個 .sh 文件是否被分配了執行權限?如果不是,則對該文件執行分配執行權限命令。

你的回答會很有幫助,我會很感激你的回答。

我認為您正在尋找-executable選項,用-not

$ ls -l
-rwxrwxr-x ... cmd.sh
-rw-rw-r-- ... foo.txt

$ find . -not -executable
./foo.txt

所以在你的情況下,你可以這樣做:

find -type f -iname '*.sh' -not -executable -exec chmod +x {} \;

我嘗試了-perm選項。

find . -perm /a=x 

將在任何地方匹配xa

所以你需要

find . -not -perm /a=x

這是接受答案的一種模糊形式。

您可以使用

find -perm /go=x

匹配group 或o其他執行檔的文件。

可悲的是你不能直接測試失去的位。

引用自:https://unix.stackexchange.com/questions/660198