Bash
用於遞歸遍歷目錄並根據文件類型條件進行 chmodding 的 Shell 腳本
任何人都可以向我指出程式碼或編寫shell腳本的教程,該腳本可以遞歸地遍歷整個目錄結構(從目前工作目錄開始,或者給出從哪裡開始的必需參數)並且可以:
- 確定一個項目是否是一個目錄,如果是,
chmod 755
它,或者…- 確定一個項目是否是一個文件(不是一個目錄),以及
chmod 644
它。我正在尋找與 Ubuntu、Debian、基於 RHEL 等的兼容性,所以我沒有用任何特定語言標記它。我想在 Bash 中這樣做,但如果你有一個 ZSH 腳本,那也可以。
我習慣了這個單行命令(將從目前工作目錄開始遞歸)
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)
簡單的答案:
chmod -R a+rX .
+X
(注意大寫 X)表示如果某些使用者已經存在執行權限,則授予執行權限。如果您有一個目錄樹,它對所有者俱有正確的權限,並且您想讓每個人都可以訪問它,那麼這是使用正確的命令。它不僅使目錄成為世界執行檔,而且使文件成為執行檔。如果您還想將寫入權限重置為僅所有者並清除任何 setuid/setgid 位,請執行此操作
chmod -R a-ws,u+w,a+rX .
如果您不想使任何文件可執行,則必須使用 zsh 兩行:
chmod 755 **/*(/) chmod 644 **/*(.)