递归删除多个目录下名为“log”的文件
Recursively delete files named `log` under multiple directories
我的文件夹结构如下:
feat1
feat2
feat3
现在每个文件夹中都有另一个名为 builds
的文件夹。
在 builds
下,我们有编号的文件夹,例如 1
、2
等。
在每个编号的文件夹下,我们都有模式 *.log
的文件,然后是名称为 log
.
的特定文件
我需要 运行 linux 服务器/unix 服务器中的命令递归地只删除名称为 log
而不是 *.log
的所有这些文件文件夹 feat1
、feat2
和 feat3
。怎么做?
这是一个使用 for 循环的快速但肮脏的解决方案,应该可以完成工作。
for f in `find feat* -name 'log'`; do rm "$f"; done;
for f in
是说我们要用 f
作为每个结果的变量做一个 for 循环。
find feat* -name 'log'
搜索任何以 "feat" 开头并使用 * 作为通配符的目录。
-name
表示我们正在寻找 log
.
的文件名
do rm "$f"
删除找到的每个结果。
有时在以这种方式执行破坏性命令之前使用 echo
会很有帮助。见下文。
for f in `find feat* -name 'log'`; do echo "$f"; done;
您 运行 的命令取决于您对搜索条件的谨慎程度以及是否需要递归搜索。
删除 feat*/builds/*/
下名为 log
的任何内容:
rm feat*/builds/*/log
递归查找并删除当前目录下任意位置名为 log
的任何内容:
find . -name log -delete
递归查找并删除名为 log
的任何内容,仅在 feat*
:
下
find feat* -name log -delete
递归查找并删除名为 log
的任何内容,仅在 feat*/builds/*/
:
下
find feat*/builds/*/ -name log -delete
递归查找并删除任何名为 log
的 文件,仅在 feat*/builds/*/
:
下
find feat*/builds/*/ -name log -type f -delete
我的文件夹结构如下:
feat1
feat2
feat3
现在每个文件夹中都有另一个名为 builds
的文件夹。
在 builds
下,我们有编号的文件夹,例如 1
、2
等。
在每个编号的文件夹下,我们都有模式 *.log
的文件,然后是名称为 log
.
我需要 运行 linux 服务器/unix 服务器中的命令递归地只删除名称为 log
而不是 *.log
的所有这些文件文件夹 feat1
、feat2
和 feat3
。怎么做?
这是一个使用 for 循环的快速但肮脏的解决方案,应该可以完成工作。
for f in `find feat* -name 'log'`; do rm "$f"; done;
for f in
是说我们要用 f
作为每个结果的变量做一个 for 循环。
find feat* -name 'log'
搜索任何以 "feat" 开头并使用 * 作为通配符的目录。
-name
表示我们正在寻找 log
.
do rm "$f"
删除找到的每个结果。
有时在以这种方式执行破坏性命令之前使用 echo
会很有帮助。见下文。
for f in `find feat* -name 'log'`; do echo "$f"; done;
您 运行 的命令取决于您对搜索条件的谨慎程度以及是否需要递归搜索。
删除
feat*/builds/*/
下名为log
的任何内容:rm feat*/builds/*/log
递归查找并删除当前目录下任意位置名为
log
的任何内容:find . -name log -delete
递归查找并删除名为
下log
的任何内容,仅在feat*
:find feat* -name log -delete
递归查找并删除名为
下log
的任何内容,仅在feat*/builds/*/
:find feat*/builds/*/ -name log -delete
递归查找并删除任何名为
下log
的 文件,仅在feat*/builds/*/
:find feat*/builds/*/ -name log -type f -delete