Linux/Unix:查找所有隐藏的点目录并删除

时间:2020-01-09 10:42:14  来源:igfitidea点击:

问题描述:
如何清理存储在nas服务器上的备份。
如何释放磁盘空间。
如何找出所有隐藏的点目录,例如
/nas01/backups/home/user/.gnome//nas01/backups/home/user/.gnome/等,
然后一次删除就可以了使用Linux或者Unix命令行选项?
请注意,我不想删除嵌套的隐藏目录,例如/nas01/backups/home/user/data/.xml/nas01/backups/home/user/foo/bar/.level/.levle2/等。

解决方法:
您可以使用find命令在Linux或者Unix系统上查找或者定位文件。
搜索是递归的,因为它将搜索所有子目录。
语法为:

find /path/to/search criteria action

以下是使用搜索条件和默认打印操作的示例find命令:

find /nas01/backups/home/user/ -name file-Name-here

要仅匹配目录,请使用:

find /nas01/backups/home/user/ -type d -name file-Name-here -print0

要仅匹配隐藏的点目录,请执行:

find /nas01/backups/home/user/ -type d -name ".*" -print0

要在命令行参数下方最多降级一级目录,请传递-maxdepth 1选项。
这将避免删除嵌套目录:

find /nas01/backups/home/user/ -maxdepth 1 -type d -name ".*" -print0

对结果满意后,使用xargs命令删除所有隐藏目录:

find .  -maxdepth 1 -type d -iname ".[^.]*" -print0 | xargs -I {} -0 rm -rvf "{}"

或者

find .  -maxdepth 1 -type d -iname ".*" -print0 | xargs -I {} -0 rm -rvf "{}"