任何人都可以向我指出編寫 shell 腳本的程式碼或教程,該腳本可以遞歸地遍歷整個目錄結構(從當前工作目錄開始,或給出從哪裡開始的必需參數)並且可以:
- 確定一個項目是否是一個目錄,如果是,則
chmod 755
它,或者... - 確定一個項目是否是一個檔案(不是目錄),以及
chmod 644
它。
我正在尋找與 Ubuntu、Debian、基於 RHEL 等的兼容性,因此我不會使用任何特定語言來標記它。我希望在 Bash 中這樣做,但如果您有 ZSH 腳本,那也可以。
答案1
我習慣了這一行命令(將從當前工作目錄開始遞歸)
find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' +
解釋:
find . # starting in curdir find
-type d # any directory
-exec chmod 0755 '{}' # and chmod it to 755
+ # (variant of -exec look find man page)
-or # or
-type f # any file
-exec chmod 0644 '{}' # and chmod it to 644
+ # (as above)
答案2
簡單的答案:
chmod -R a+rX .
+X
(注意大寫的X)表示如果某個使用者已經存在執行權限,則授予執行權限。如果您的目錄樹具有所有者的正確權限,並且您希望每個人都可以存取它,那麼這是正確的命令。它不僅使目錄可以全域執行,還可以使檔案成為可執行檔。
如果您還想僅將寫入權限重設為擁有者並清除任何 setuid/setgid 位,請執行下列操作
chmod -R a-ws,u+w,a+rX .
如果您不想使任何檔案可執行,則必須使用 zsh 兩行程式碼:
chmod 755 **/*(/)
chmod 644 **/*(.)