如何递归包括隐藏文件或目录的目录


37

似乎带有递归标志的chown不适用于隐藏的目录或文件。有没有简单的解决方法?

Answers:


56

我很确定该-R标志确实起作用-无论如何,它始终对我有用。在行内使用*隐藏文件/目录的目录时,什么是行不通的?这样做

$ chown -R /home/user/*

不会做隐藏的文件和目录。但是,如果您遵循

$ chown -R /home/user/.[^.]*

那么你会做所有的隐藏文件,(但不.还是..因为/home/user/.*会做)。说了这么多,我希望

$ chown -R /home/user

将所有隐藏文件和目录放到内部/home/user-尽管这当然也会更改目录本身的权限,这可能不是您想要的。


3
chown在目录上执行a 的副作用是,您更改了目录本身及其所有内容的权限,这可能是您想要的,也可能不是。
wfaulk 2012年

A +对我来说就像是一种魅力。
SuperFamousGuy 2015年

我尝试过chown nginx:nginx -R /path/to/.[^.]*,它只将所有权更改为.dot隐藏文件。不是全部。
Pathros

@wfaulk正如@Hamish Downer所提到的,您必须同时执行*和跟随它.[.^]*才能获取所有文件。
god_is_love

9

我相信以下命令应该为此工作

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/

1
-h影响符号链接而不是任何引用的文件(仅在可以更改符号链接所有权的系统上有用)
R. van Twisk

8

“ chown -R”有效,但是另一种方法是使用find。

 find /path/to/dir -exec chown USER {} \;

5
需要注意的是与GNU查找,使用+,而不是;作为终结者的-exec会更有效,因为它会用叉的最低需要的数量而不是执行chown每个文件/目录一个叉

3

您可以dotglob临时更改属性以扩展。文件,然后将其还原。

shopt -s dotglob; chown -R user:group FOLDER; shopt -u dotglob

更多信息dotglob可以在这里找到


2

使用for循环与ls -A选项,我们可以找到所有隐藏的文件和目录排除.,并..再更改所有隐藏文件和目录的所有权。

for i in `ls -A | grep "^\."`;do chown -R user:group $i;done

使用xargs选项ls -A

ls -A | grep "^\." | xargs chown user:group

有关更多详细信息,请单击此处并访问我的网站


1

另外,如果您像我一样,您大概会从当前目录运行chown。我习惯于这样运行:chown rails.rails -R *。只需将星号更改为一个点(当前目录的缩写),如下所示:引入chown rails.rails -R .所有隐藏目录。


2
副作用是您更改了当前目录及其所有内容的权限,这可能是您想要的,也可能不是。
wfaulk

1

chown将与隐藏的文件和目录一起使用。在以下示例中,我们将更改中所有文件的用户和组所有权~/some/folder所有的文件包括所有隐藏文件(例如.bashrc.profile等),并在文件夹~/some/folder级以下。请特别注意,我们不希望更改的所有权~/some,因此我们将从~/some/..所有权更改中排除该文件。

$ cd ~/some/folder 
$ sudo chown -R usrname:grpname . 
$ 

这对我
有用

0

为当前用户锁定当前目录和子目录中的所有文件;

find . -exec chown $(whoami) {} \;

或者用户由于权限限制而无法整理某些文件;

sudo find . -exec chown $(logname) {} \;

-2

你可以做类似的事情

for i in `ls -A`;do chown -R user:group $i;done

-A资本 A)是因为它不包括重要的“” 和“ ..”


这将仅更改当前目录中的文件和子目录,而不更改任何较低级别。(这可能是OP想要的。)它也会破坏文件名和目录名称,并在其中包含空格(或制表符)。
wfaulk 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.