我不小心整个事情
drwxr-xr-x 4 imaan rayhawkpasscom 4096 May 9 14:59 imaan drwxr-xr-x 4 kimessite rayhawkpasscom 4096 Mar 15 2011 kimessite drwxr-xr-x 4 kineticimaging rayhawkpasscom 4096 Apr 4 15:56 kineticimaging drwxr-xr-x 4 lynbrookmed rayhawkpasscom 4096 Jul 18 11:51 lynbrookmed drwxr-xr-x 5 marcop rayhawkpasscom 4096 Sep 6 15:39 marcop drwxr-xr-x 5 mesachiro rayhawkpasscom 4096 Sep 9 13:21 mesachiro drwxr-xr-x 4 paramount rayhawkpasscom 4096 Jun 7 10:39 paramount drwxr-xr-x 4 paramountco rayhawkpasscom 4096 Jun 16 13:50 paramountco drwx------ 2 rayhawk rayhawkpasscom 4096 Jul 13 15:30 rayhawk
我错误地将所有这些目录的组更改为不正确的组。
组名应与所有者(第三列)或文件夹(最后一列)相同
有没有一种方法,我可以自动chgrprecursion基于所有者/目录名称?
从目录中,我会运行: for i in *; do chown -R $i:$i $i; done for i in *; do chown -R $i:$i $i; done
(chown中的“-R”,只有当你最初做了recursionchgrp )
这对我来说似乎是正确的,但是你的YMMV可能会卖你的长子进行器官捐献,所以要小心:
find . -type d -maxdepth 1 -exec chgrp -R {} {};
在查找中使用组或gid选项,并对查找的结果进行更改。 这是一个列举mySQL拥有的目录的例子
[root@kvm0001 ~]# find /var/ -type d -group mysql -exec ls -la {} \; | more total 12 drwxr-xr-x. 2 mysql mysql 4096 Oct 9 17:09 . drwxr-xr-x. 25 root root 4096 Oct 10 03:52 .. -rw-rw----. 1 mysql mysql 5 Oct 9 17:09 mysqld.pid total 20500 drwxr-xr-x. 5 mysql mysql 4096 Oct 9 17:09 . drwxr-xr-x. 33 root root 4096 Oct 4 21:01 .. drwx------. 2 mysql mysql 4096 Oct 4 21:23 cacti -rw-rw----. 1 mysql mysql 10485760 Oct 9 17:06 ibdata1 -rw-rw----. 1 mysql mysql 5242880 Oct 9 17:09 ib_logfile0 -rw-rw----. 1 mysql mysql 5242880 Oct 4 20:19 ib_logfile1 drwx------. 2 mysql mysql 4096 Oct 4 20:19 mysql srwxrwxrwx. 1 mysql mysql 0 Oct 9 17:09 mysql.sock drwx------. 2 mysql mysql 4096 Oct 4 20:19 test
在这种情况下,您想要将find的目录更改为不同的组用户。 在这种情况下,你可以这样做:
find /path/to/directory -type d -group rayhawkpasscom -exec chgrp -Rv {}\;
如果目录名称与所有者不同,并且想要根据所有者更改组所有权,请尝试以下操作:
# ls -d */ | while read d; do chgrp -R $(stat -c %U "$d") "$d"; done