在Linux中,我們可以使用以下命令以遞歸方式更改文件和文件夾的權限模式。在mac中使用shell命令遞歸地更改文件和文件夾的權限
找到「/ Users/Test/Desktop/PATH」-exec * chmod 777 {} \;
我怎麼可以做同樣的mac,因爲我得到以下錯誤重複。
發現:test_file裏面:沒有這樣的文件或目錄
在Linux中,我們可以使用以下命令以遞歸方式更改文件和文件夾的權限模式。在mac中使用shell命令遞歸地更改文件和文件夾的權限
找到「/ Users/Test/Desktop/PATH」-exec * chmod 777 {} \;
我怎麼可以做同樣的mac,因爲我得到以下錯誤重複。
發現:test_file裏面:沒有這樣的文件或目錄
你可以只使用-R(遞歸)標誌。
chmod -R 777 /Users/Test/Desktop/PATH
的問題是,*
是得到你的shell解釋並擴大到一個名爲TEST_FILE
文件正好是在當前工作目錄,所以你告訴find
執行名爲TEST_FILE
的命令,不存在。我不確定你想用*
完成什麼,你應該刪除它。
此外,你應該使用成語-exec program '{}' \+
而不是-exec program '{}' \;
使find
沒有一個新的進程爲每個文件。使用;
,每個文件都有一個新的進程,而+
只支持一個進程並將所有文件傳遞到一個命令行上,這對於簡單程序如chmod
來說效率更高。
最後,chmod
可以做的-R
標誌自身遞歸的變化,所以,除非你需要搜索特定的文件,只是這樣做:
chmod -R 777 /Users/Test/Desktop/PATH
通過使用chmod是:
對於遞歸文件:
chmod -R 777 foldername or pathname
對於非遞歸:
chmod 777 foldername or pathname
我沒有在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")
我認爲這是一個更好的答案,因爲在大多數情況下,文件和目錄不會有相同的權限。但我認爲'。'引用是危險的 - 如果你在錯誤的目錄中,你可以很容易地搞砸了。如果參數列表過長,答案2和3也不起作用。 – mrtnmgs 2017-02-21 16:43:18
這兩個看起來一樣。 O_o – 2015-01-03 21:58:17
如果mac抱怨操作不允許,用sudo執行 – 2016-12-12 11:02:28