如何在Linux中使用`find`命令删除非空目录?
发布时间:2020-12-14 02:46:23 所属栏目:Linux 来源:网络整理
导读:我有充满垃圾的临时目录,都以__temp__开头(例如__temp__user_uploads),我想用清理函数删除它.我的功能尝试是运行: find . -name __temp__* -exec rm -rf '{}' ; 如果我运行命令并且有多个__temp__目录(__temp__foo和__temp__bar),我得到输出: find: __tem
我有充满垃圾的临时目录,都以__temp__开头(例如__temp__user_uploads),我想用清理函数删除它.我的功能尝试是运行:
find . -name __temp__* -exec rm -rf '{}' ; 如果我运行命令并且有多个__temp__目录(__temp__foo和__temp__bar),我得到输出: find: __temp__foo: unknown option 如果我运行该命令并且只有一个__temp__目录(__temp__foo),它将被删除并获得输出: find: ./__temp__foo: No such file or directory 为什么命令不起作用,为什么它不一致,我该如何解决呢? 解决方法
使用深度优先搜索和引用(或转义)shell元字符*:
find . -depth -name '__temp__*' -exec rm -rf '{}' ; 说明 如果没有-depth标志,find命令将删除匹配的文件名,然后尝试进入(现在未链接的)目录.这是单个__temp__目录中“无此文件或目录”的来源. 在不引用或转义*的情况下,shell将扩展该模式,匹配当前工作目录中的几个__temp__whatever文件名.这种扩展会混淆find,它会在参数列表中的那个点上期待选项而不是文件名. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |