看板 Linux 關於我們 聯絡資訊
在網路上有看到一個方法可以把某個目錄下所有資料夾都變成群組可執行 指令如下 sudo chmod g+x $(find ./ -type d) 但我執行時會出現一些怪怪的訊息, 例如一些資料夾他說根本找不到 另問一下這到底是什麼原理? 他是執行了很多chmod指令還是一個chmod指令後面帶了很長的參數? 如果是後者會不會因為太長而有部份失敗@@" -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.226.184 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1462287244.A.C47.html
CP64: 這個就後面加了一長串的參數 05/03 22:54
CP64: find ./ -type d -exec sudo chmod g+x {} \; 05/03 22:55
CP64: 這種的就是執行很多次 05/03 22:55
yvb: 可能是目錄名有空白. 太長應該是 arguments too long 之類. 05/03 23:00
CP64: for dir in $(find . -type d); do chmod g+x $dir; done 05/03 23:02
CP64: 這種也是 不過目錄名稱有空白會有問題 05/03 23:02
CP64: 剛剛試了一下 原 PO 那條也會有空白的問題 05/03 23:03
ymzk: 有看過find ./ -type d -exec sudo chmod g+x {} \; 05/03 23:05
ymzk: 但無法理解 {} \ 是什麼意思? 05/03 23:05
CP64: 那是 find 的參數格式 05/03 23:07
CP64: 他會察看指定目錄下的所有檔案 05/03 23:09
CP64: 當符合條件時會執行 exec 後面指定的指令 05/03 23:09
CP64: 因為 ; 在大部份 shell 裡有意義所以要 escape 05/03 23:09
Adama: {}代表find找到的檔案,\;是"sudo chmod...;"的那個";" 05/03 23:10
CP64: {} 則代表這邊要置換成目前遍歷到且符合條件的檔名 05/03 23:10
ymzk: 理解=口= 感謝 那這個沒有空白問題囉@@ 05/03 23:11
CP64: 我試過是沒有 05/03 23:14
ymzk: 嗯... 這條好像也沒錯誤訊息了也~ 感謝 05/03 23:17
danny8376: find的exec會自動上""啦 原PO的那條要另外包上""才行 05/04 02:37