是否可以找到并更改特定用户拥有的所有文件的所有权?我以错误的用户身份做了很多事情,需要将文件的所有权授予正确的用户。
是否有一种递归和条件的方法可以改变一堆文件和目录?
答案1
您可以将此便携式查找命令与类似这样的命令一起使用。
find . -user old-user -exec chown new-user:new-group {} \;
您可以扩展它来使用 -iname 选项查找特定文件(非 POSIX,但在 OSX 上可用)
find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
. 代表当前文件夹及以下文件夹,因此您可以使用特定路径作为基础。
find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
答案2
您可以使用
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *
来自手册chown --help
:
--from=CURRENT_OWNER:CURRENT_GROUP
change the owner and/or group of each file only if
its current owner and/or group match those specified
here. Either may be omitted, in which case a match
is not required for the omitted attribute.
编辑:当然,这只适用于Linux的和大多数 UNIces。对于 OSX(基于 BSD),请参阅 @StephenTrapped 的解决方案。
答案3
chown选项-h
会改变符号链接文件本身的权限,而不仅仅是目标的权限。
当对使用符号链接在版本之间切换的软件二进制文件夹执行此操作时,这可能至关重要。
find . -user old-user -exec chown -h new-user:new-group {} \;
答案4
Linux 答案...明确回答这个问题:
到仅有的改变用户所有者这个的文件夹和一切尽在其中拥有特定用户:
sudo chown --from=ownerOld -Rc ownerNew /this_is_my_path/
一些变化有助于理解语法,从而帮助您避免灾难:
到仅有的改变用户所有者一切事物文件夹(不是文件夹本身)由特定用户:
sudo chown --from=ownerOld -Rc ownerNew /this_is_my_path/*
到仅有的改变用户所有者这个的文件夹和一切尽在其中拥有特定用户和群组:
sudo chown --from=ownerOld:groupOld -Rc ownerNew /this_is_my_path/
改变用户和群组所有者一切事物文件夹(不是文件夹本身)由特定用户:
sudo chown --from=ownerOld -Rc ownerNew:groupNew /this_is_my_path/*
到仅有的改变群主这个的文件夹和一切尽在其中拥有特定群体:
sudo chown --from=:groupOld -Rc :groupNew /this_is_my_path/
到仅有的改变群主一切事物文件夹(不是文件夹本身)由特定用户和群组:
sudo chown --from=ownerOld:groupOld -Rc :groupNew /this_is_my_path/*
如果您不希望更改组,请不要使用“:”或放置组名。此外,您需要成为所有者并具有写权限,因此可能需要 sudo。请记住,这是一个危险的命令,请勿在 root“/”上运行,如果您弄错了,您将陷入困境。执行前请仔细检查三遍。
开关 c 表示显示变化。开关 R 是递归的
/path/* 不会拾取隐藏文件。