如何使用 Bash 删除所有隐藏的文件和目录?

Yon*_*oza 28 files bash

显而易见的解决方案产生的退出代码为 1:

bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

一种可能的解决方案是跳过“。” 和 ".." 目录,但只会删除名称超过 3 个字符的文件:

bash$ rm -f .??*
Run Code Online (Sandbox Code Playgroud)

Rus*_*ing 36

rm -rf .[^.] .??*

应该捕获所有情况。.??* 将只匹配 3+ 个字符的文件名(如前面的答案所述),.[^.] 将捕获任何两个字符条目(除了 ..)。

  • 小心那个较短的版本,它会给出相似但不相同的结果。它不会匹配前面有两个点的名称(例如,有时会看到隐藏 rootkit 等的“.../”) (4认同)