[問題] 關於bash指令

作者: ymzk (電磁居士)   2016-05-03 22:54:02
在網路上有看到一個方法可以把某個目錄下所有資料夾都變成群組可執行
指令如下
sudo chmod g+x $(find ./ -type d)
但我執行時會出現一些怪怪的訊息, 例如一些資料夾他說根本找不到
另問一下這到底是什麼原理?
他是執行了很多chmod指令還是一個chmod指令後面帶了很長的參數?
如果是後者會不會因為太長而有部份失敗@@"
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2015-05-03 22:54:00
這個就後面加了一長串的參數find ./ -type d -exec sudo chmod g+x {} \;這種的就是執行很多次
作者: yvb   2016-05-03 23:00:00
可能是目錄名有空白. 太長應該是 arguments too long 之類.
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:02:00
for dir in $(find . -type d); do chmod g+x $dir; done這種也是 不過目錄名稱有空白會有問題剛剛試了一下 原 PO 那條也會有空白的問題
作者: ymzk (電磁居士)   2016-05-03 23:05:00
有看過find ./ -type d -exec sudo chmod g+x {} \;但無法理解 {} \ 是什麼意思?
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:07:00
那是 find 的參數格式他會察看指定目錄下的所有檔案當符合條件時會執行 exec 後面指定的指令因為 ; 在大部份 shell 裡有意義所以要 escape
作者: Adama (So Say We All.)   2016-05-03 23:10:00
{}代表find找到的檔案,\;是"sudo chmod...;"的那個";"
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:10:00
{} 則代表這邊要置換成目前遍歷到且符合條件的檔名
作者: ymzk (電磁居士)   2016-05-03 23:11:00
理解=口= 感謝 那這個沒有空白問題囉@@
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2016-05-03 23:14:00
我試過是沒有
作者: ymzk (電磁居士)   2016-05-03 23:17:00
嗯... 這條好像也沒錯誤訊息了也~ 感謝
作者: danny8376 (釣到一隻猴子@_@)   2016-05-04 02:37:00
find的exec會自動上""啦 原PO的那條要另外包上""才行

Links booklink

Contact Us: admin [ a t ] ucptt.com