linux – 如何使用find -exec和rm删除目录内容(而不是目录本身)
发布时间:2020-12-13 18:19:23 所属栏目:Linux 来源:网络整理
导读:我试图删除一些目录的内容(但不是目录本身)使用这个: find -type d -name someDirs -exec rm -rf {}/* ; 但它不起作用.有小费吗? 解决方法 您的命令的问题在于,在实际调用命令之前,您的shell将完成通配符扩展.由于您的shell找不到与{} / *匹配的文件(因为
我试图删除一些目录的内容(但不是目录本身)使用这个:
find -type d -name someDirs -exec rm -rf {}/* ; 但它不起作用.有小费吗? 解决方法
您的命令的问题在于,在实际调用命令之前,您的shell将完成通配符扩展.由于您的shell找不到与{} / *匹配的文件(因为您在当前目录中没有带有文字名{}的目录),*将被传递给未更改的命令,然后由以下命令修改:找到删除someDirs目录中名为literal *的文件,因为rm命令不会再次扩展通配符.你可以通过运行来“调试”它
find -type d -name someDirs -exec echo rm -rf {}/* ; 代替.为了确保shell有机会扩展你的*,让exec生成另一个shell,它可以扩展*(并保护命令不会首先用单引号扩展),如下所示: find -type d -name someDirs -exec sh -c 'rm -rf {}/*' ; 或者像这样测试: find -type d -name someDirs -exec sh -c 'echo rm -rf {}/*' ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |