關於bash指令 - Linux

Table of Contents

在網路上有看到一個方法可以把某個目錄下所有資料夾都變成群組可執行
指令如下
sudo chmod g+x $(find ./ -type d)
但我執行時會出現一些怪怪的訊息, 例如一些資料夾他說根本找不到
另問一下這到底是什麼原理?
他是執行了很多chmod指令還是一個chmod指令後面帶了很長的參數?
如果是後者會不會因為太長而有部份失敗@@"

--

All Comments

William avatarWilliam2016-05-08
這個就後面加了一長串的參數
Blanche avatarBlanche2016-05-13
find ./ -type d -exec sudo chmod g+x {} \;
這種的就是執行很多次
Enid avatarEnid2016-05-16
可能是目錄名有空白. 太長應該是 arguments too long 之類.
Daniel avatarDaniel2016-05-16
for dir in $(find . -type d); do chmod g+x $dir; done
這種也是 不過目錄名稱有空白會有問題
Olive avatarOlive2016-05-19
剛剛試了一下 原 PO 那條也會有空白的問題
Genevieve avatarGenevieve2016-05-19
有看過find ./ -type d -exec sudo chmod g+x {} \;
但無法理解 {} \ 是什麼意思?
Bethany avatarBethany2016-05-21
那是 find 的參數格式
Daph Bay avatarDaph Bay2016-05-23
他會察看指定目錄下的所有檔案
當符合條件時會執行 exec 後面指定的指令
因為 ; 在大部份 shell 裡有意義所以要 escape
Michael avatarMichael2016-05-25
{}代表find找到的檔案,\;是"sudo chmod...;"的那個";"
Elvira avatarElvira2016-05-26
{} 則代表這邊要置換成目前遍歷到且符合條件的檔名
Blanche avatarBlanche2016-05-27
理解=口= 感謝 那這個沒有空白問題囉@@
John avatarJohn2016-05-29
我試過是沒有
Rebecca avatarRebecca2016-06-02
嗯... 這條好像也沒錯誤訊息了也~ 感謝
Hedda avatarHedda2016-06-04
find的exec會自動上""啦 原PO的那條要另外包上""才行