Linux
chown 目錄內容的最簡單方法是什麼?
我經常用
ls -ld . # remember current user and group chown -R user.group . chown remembered_user.remembered_group .
難道沒有更簡單的方法來遞歸地 chown 目錄中的所有文件和目錄,而不是目錄本身嗎?它應該包括隱藏文件並且無論有多少文件都可以工作。
您可以使用
find
來避免參數列表太長,同時仍然盡可能多地chown
一次性傳遞參數(使用+
而不是;
)。-prune
允許您刪除一些不需要的參數chown
(它不會下降目錄,它只會chown -R
在它們上使用):find . \! -iname . -prune -exec chown -R user:group {} +
為什麼不
chown
遞歸地在目錄中執行。$ chown -R user.group *
例子
.
之前的目錄。$ ll total 20 drwxrwxr-x. 2 saml saml 4096 Apr 9 22:30 dir1 drwxrwxr-x. 2 saml saml 4096 Apr 9 22:30 dir2 drwxrwxr-x. 2 saml saml 4096 Apr 9 22:30 dir3 drwxrwxr-x. 2 saml saml 4096 Apr 9 22:30 dir4 drwxrwxr-x. 2 saml saml 4096 Apr 9 22:30 dir5
只更改 dir 的內容。
$ chown -R saml.wheel *
後的內容。
$ ll total 20 drwxrwxr-x. 2 saml wheel 4096 Apr 9 22:30 dir1 drwxrwxr-x. 2 saml wheel 4096 Apr 9 22:30 dir2 drwxrwxr-x. 2 saml wheel 4096 Apr 9 22:30 dir3 drwxrwxr-x. 2 saml wheel 4096 Apr 9 22:30 dir4 drwxrwxr-x. 2 saml wheel 4096 Apr 9 22:30 dir5
同時,目錄
.
保持不變。$ ls -ld . drwxrwxr-x. 7 saml saml 4096 Apr 9 22:29 .
如果有隱藏文件,請確保設置您的 shell 以將它們包含在 glob 中:
shopt -s dotglob
在 bash 中、FIGNORE='@(.|..)'
在 ksh93 中、setopt dot_glob
在 zsh 中。或者,添加與它們匹配的模式(請注意,在 zsh 以外的 shell 中,
.*
將匹配.
and..
):chown -R saml.wheel * .[!.]* ..?*
或者在 zsh 中,簡單地
chown -R saml.wheel *(D)