如何解决删除具有特定名称的所有文件夹的内容
如何删除所有具有特定名称的目录的内容?
我有一个目录结构,里面有很多 build
目录。我想删除它们的内容(所有文件和子目录),但保留目录本身(因此会有空的 build
目录)。
我正在尝试调整这个问题中提出的解决方案:How to remove folders with a certain name 但是在执行此命令后:
find . -name "build" -type d -exec rm -r "{}/*" \;
我收到了回复(针对每个找到的匹配项)
rm: cannot remove './path/to/found/build/*': No such file or directory
当我直接打电话时
rm -r ./path/to/found/build/*
里面的所有文件都被删除了(如预期的那样)
解决方法
要扩展 *
中的 -exec rm -r "{}/*"
,您需要运行 shell 而不是直接执行 rm
,但是使用此选项您必须小心不要引入命令注入漏洞. (见https://unix.stackexchange.com/a/156010/330217)
另一种选择是使用 -path
而不是 -name
find . -path '*/build/*' -exec rm -r "{}" \; -prune
选项 -prune
是避免下降到之前已删除的目录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。