首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到具有特定名称的所有子目录并删除其内容(而不删除目录本身)

如何找到具有特定名称的所有子目录并删除其内容(而不删除目录本身)
EN

Stack Overflow用户
提问于 2018-07-31 05:07:26
回答 3查看 96关注 0票数 0

我似乎找不到一个解决方案,可以在几个似乎提出类似问题的帖子中工作。这是最接近工作的命令,我将其用作测试文件夹的测试:

代码语言:javascript
复制
find . -iname "*Adobe Premiere Pro Video Previews*" -exec sh -c 'rm -rf {}/*' \;

问题是find . -iname "*Adobe Premiere Pro Video Previews*"自己找到子目录并打印它们,而-exec sh -c 'rm -rf {}/*' \;只删除内容而不删除目录本身。但是,当它们放在一起时,并不能找到目录并删除其内容。我应该使用什么命令来同时完成这两个任务?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2018-07-31 05:26:40

代码语言:javascript
复制
#!/bin/bash
while read -r line; do
    echo "Deleting CONTENTS of folder: $line"
    rm -rf "$line/*"
done <<< $(find . -type d -iname "*Adobe Premiere Pro Video Previews*")

这将遍历find的结果(使用-type d仅显示目录,因此如果文件包含搜索字符串,则不会遇到问题),并对每个结果的内容执行rm -rf/*很重要,因为如果没有它,结果目录也会被删除,而不仅仅是它的内容。

票数 0
EN

Stack Overflow用户

发布于 2018-07-31 06:08:12

代码语言:javascript
复制
for dir in `find . -type d -iname "*Adobe Premiere Pro Video Previews*"`; do
    find $dir -type f -delete
done
票数 0
EN

Stack Overflow用户

发布于 2018-07-31 19:38:32

我可能不是bash专家,但对我来说,以下命令是有效的:

find . -iname "*test*" -type d -exec sh -c "rm -rf {}/*" \;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51602300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档