2010-09-30 38 views

回答

21

你可以只使用-R(遞歸)標誌。

chmod -R 777 /Users/Test/Desktop/PATH 
32

的問題是,*是得到你的shell解釋並擴大到一個名爲TEST_FILE文件正好是在當前工作目錄,所以你告訴find執行名爲TEST_FILE的命令,不存在。我不確定你想用*完成什麼,你應該刪除它。

此外,你應該使用成語-exec program '{}' \+而不是-exec program '{}' \;使find沒有一個新的進程爲每個文件。使用;,每個文件都有一個新的進程,而+只支持一個進程並將所有文件傳遞到一個命令行上,這對於簡單程序如chmod來說效率更高。

最後,chmod可以做的-R標誌自身遞歸的變化,所以,除非你需要搜索特定的文件,只是這樣做:

chmod -R 777 /Users/Test/Desktop/PATH 
5

通過使用chmod是:

對於遞歸文件:

chmod -R 777 foldername or pathname 

對於非遞歸:

chmod 777 foldername or pathname 
+0

這兩個看起來一樣。 O_o – 2015-01-03 21:58:17

+0

如果mac抱怨操作不允許,用sudo執行 – 2016-12-12 11:02:28

3

我沒有在Mac OSX機器上,但在Linux bash中我使用類似下面的chmod命令只目錄測試:

find . -type d -exec chmod 755 {} \+ 

但這也做同樣的事情:

chmod 755 `find . -type d` 

等做到這一點:

chmod 755 $(find . -type d) 

最後兩個使用不同形式的S ubcommands。第一種是使用反引號(較舊和折舊),另一種是子命令語法。

所以我認爲在你的情況下,以下將做你想要的。

chmod 777 $(find "/Users/Test/Desktop/PATH") 
+1

我認爲這是一個更好的答案,因爲在大多數情況下,文件和目錄不會有相同的權限。但我認爲'。'引用是危險的 - 如果你在錯誤的目錄中,你可以很容易地搞砸了。如果參數列表過長,答案2和3也不起作用。 – mrtnmgs 2017-02-21 16:43:18

相關問題