chmod -R 775 *.cgi
僅改變在當前目錄下的文件的權限,在子目錄中的文件沒有得到根本改變。這與簡單地執行chmod 775 *.cgi
完全相同。我看到人們使用諸如find
等的解決方案。好極了,但爲什麼-R模式甚至存在,如果它甚至沒有完成任何事情?爲什麼chmod上的遞歸模式除了遞歸之外什麼都做?
回答
可能是因爲你沒有命名*.cgi
目錄。答曰manual:
-R遞歸變更文件模式位。對於每個文件操作數名的 目錄,文件模式將在它下面的文件層次結構更改目錄的文件 模式位和所有 文件。
例如:
$ ls -R
.:
a a.c b.c c.c
./a:
a.c b.c sub
./a/sub:
a.c b.c
$ chmod -R 444 *.c
$ ls -l
drwxr-xr-x 3 msw msw 4096 2010-08-12 18:07 a
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 a.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 b.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 c.c
$ : directory a not affected
$ chmod -R u-w a
$ ls -l a
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
dr-xr-xr-x 3 msw msw 4096 2010-08-12 18:07 sub
$ ls -l a/sub
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
$ : got em
-R
告訴chmod
遞歸到被作爲參數給出任何目錄。
如果你說chmod -R 775 *.cgi
,外殼將擴大到*.cgi
匹配這個模式,其文件的列表,並通過作爲參數列表 - 所以chmod
沒有被要求尋找到任何其他目錄。
(這將遞歸到任何目錄它匹配*.cgi
...)
哦,呃。所以遞歸地更改某個目錄下的所有文件很有用。 – 2010-08-12 22:08:10
要完成你想要嘗試
find . -name '*.cgi' -print0 | xargs -0 chmod 755
這裏find
什麼產生的所有文件的一個列表.cgi
從當前目錄向下結束,並將該列表傳遞給xargs
,該列表將chmod
應用於每個目錄。
*.cgi
由您的shell擴展到當前目錄中以.cgi
結尾的所有文件名列表。然後shell使用這個文件名列表調用chmod
。
chmod
着眼於所有從外殼得到這些文件的名稱,改變有模式,並會遞歸,如果他們中的一些人目錄。但可能他們都不是,所以沒有任何遞歸。
要查找當前目錄及其子目錄下的所有CGI文件,並運行他們chmod
,你可以這樣做:
find . -name '*.cgi' -print0 | xargs -0 chmod 775
這個答案是一樣的dmckee – 2013-05-22 12:32:06
*
是一個shell內建命令,而-R是一個命令行選項。所以chmod
永遠不會得到*
作爲論點。
把情況foo0.cgi和foo1.cgi是目錄的內容。如果輸入chmod -R o+r *.cgi
,則chmod
將獲得'-R','o + r','foo0.cgi'和'foo1.cgi'作爲參數。
你想要做什麼可以很容易地完成:
find . -iname '*.cgi' | xargs chmod 755
這個答案是一樣的dmckee – 2013-05-22 12:32:59
- 1. 遞歸 - 它做什麼
- 2. 遞歸 - 我做錯了什麼?
- 3. 怎麼做遞歸
- 4. 這種遞歸方法做什麼?
- 5. 這個遞歸函數做什麼?
- 6. 什麼是間接遞歸?
- 7. 什麼是遞歸樹?
- 8. 什麼是尾遞歸消除?
- 9. 爲什麼這種遞歸方式是什麼意思?
- 10. 遞歸mkdir()和chmod()?
- 11. 爲什麼我的遞歸失敗?
- 12. 爲什麼不是iframe的遞歸?
- 13. 用遞歸函數掙扎,我做錯了什麼
- 14. 遞歸與歸納證明之間的關係是什麼?
- 15. 什麼是DRAM堆棧(遞歸期間發生了什麼)?
- 16. 爲什麼這個遞歸很慢?
- 17. 爲什麼不是無限遞歸?
- 18. 這個尾巴爲什麼遞歸?
- 19. 爲什麼scala.util.Success.apply無限遞歸?
- 20. 爲什麼這個javascript保持遞歸
- 21. 爲什麼scrapy yield.Request()沒有遞歸?
- 22. 爲什麼不是這種尾遞歸?
- 23. 遞歸函數溢出,爲什麼?
- 24. 爲什麼這個遞歸碼工作?
- 25. 遞歸factiorial。我爲什麼得到NaN
- 26. 爲什麼有無限遞歸?
- 27. 遞歸方法爲什麼會停止?
- 28. 爲什麼遞歸更改結果?
- 29. 爲什麼遞歸不起作用?
- 30. 遞歸 - 爲什麼用return語句
所有的答案酷感謝。使用find解釋的答案很有用,但我選擇了msw的答案,因爲我更加好奇-R的作用。我只是選擇了MSW而不是馬修,因爲MSW稍早一些。 – 2010-08-12 22:17:15