解决方法
您的命令的问题在于,在实际调用命令之前,您的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 {}/*' \;