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

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

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

bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1

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

bash$ rm -f .??*

答案1

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

应该可以捕获所有情况。.??*仅匹配 3 个以上字符的文件名(如上一个答案中所述),.[^.]可以捕获任何两个字符的条目( 除外..)。

答案2

find -path './.*' -delete

这将匹配当前目录中所有以 开头的文件,.并递归删除这些文件。非隐藏目录中的隐藏文件不受影响。

如果你真的想擦掉一切从目录中find -delete获取就足够了。

答案3

最好的方法可能是:

  • 查找 . -iname .* -maxdepth 1 -type f -exec rm {} \;

改变R Mls -l如果你只是想看看会删除什么,为了详细显示输出,你可能需要添加-v选择R M

  • -类型 f选项告诉寻找仅查找文件的命令(省略目录、链接等)
  • -最大深度 1告诉寻找不要进入子目录

附言:不要忘记以 '\;' 结尾

答案4

ls -la | awk '$NF ~ /^\.[^.]+/  {print $NF}' | xargs rm -rf

ls -la ............. long list (all files and folders)
$NF ................ last field (file or folder name)
~   ................ Regular Expression match
/^\.[^.]+/ ......... dot followed by not dot at least once +

If the last field $NF match pattern show it and send 
it to xargs which will perform the task.

相关内容