如何递归地删除目录,包括隐藏文件或目录

tob*_*oby 47 unix chown

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

Ham*_*ner 70

我很确定这面-R旗帜确实有效——无论如何它总是对我有用。什么行不通,以及在我的命令行使用早期让我绊倒的,是*在带有隐藏文件/目录的目录中使用。这样做

$ chown -R /home/user/*
Run Code Online (Sandbox Code Playgroud)

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

$ chown -R /home/user/.[^.]*
Run Code Online (Sandbox Code Playgroud)

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

$ chown -R /home/user
Run Code Online (Sandbox Code Playgroud)

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

  • 在目录上执行 `chown` 会产生副作用,即您更改目录本身及其所有内容的权限,这可能是您想要的,也可能不是。 (3认同)

小智 10

我相信以下命令应该适用于此

chown -hR userid:usergroup /nameofdirectory/nameofsubdir/
Run Code Online (Sandbox Code Playgroud)

  • -h 影响符号链接而不是任何引用的文件(仅在可以更改符号链接所有权的系统上有用) (2认同)

hay*_*lci 8

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

 find /path/to/dir -exec chown USER {} \;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于 GNU find,使用 `+` 而不是 `;` 作为 -exec 的终止符会更有效,因为它将使用最少需要的分叉数来代替每个文件/目录的一个分叉 (5认同)

Zyp*_*her -2

你可以做类似的事情

for i in `ls -A`;do chown -R user:group $i;done
Run Code Online (Sandbox Code Playgroud)

-A(大写A)很重要,因为它排除了“.”。和 '..'