linux - 删除具有特定名称的所有文件夹的内容
问题描述
如何删除具有特定名称的所有目录的内容?
我有一个目录结构,build
里面有很多目录。我想删除它们的内容(所有文件和子目录),但保留目录本身(所以会有空build
目录)。
我正在尝试调整这个问题中提出的解决方案:How to remove folder with a certain name but after execution this command:
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/*
里面的所有文件都被删除(如预期的那样)
解决方案
要使*
in-exec rm -r "{}/*"
扩展,您需要运行 shell 而不是rm
直接执行,但是使用此选项您必须小心不要引入命令注入漏洞。(见https://unix.stackexchange.com/a/156010/330217)
另一种选择是使用-path
而不是-name
find . -path '*/build/*' -exec rm -r "{}" \; -prune
选项-prune
是避免下降到之前已删除的目录。
推荐阅读
- python - 损失函数内的Tensorflow变量初始化
- django - 类型字符变化的值太长(3)Django模型
- python - FastAPI 没有引发 HTTPException
- jquery - Angular 7 - 工具提示上的多行字符串
- javascript - 如何使用 React-native-range-slider 在触摸结束时设置状态
- powershell - Teradata bteq 控制台未在 powershell transcipt 中传输
- amazon-web-services - 如何为 gitlab CI CD 创建构建和部署路径?
- javascript - 为 html 创建自定义拼写检查
- ios - NWConnection 超时
- laravel - 在laravel中按降序排列