使用find排除子目录(Exclude a sub

编程入门 行业动态 更新时间:2024-10-20 20:46:02
使用find排除子目录(Exclude a sub-directory using find)

我有这样的目录结构

data |___ | abc |____incoming def |____incoming |____processed 123 |___incoming 456 |___incoming |___processed

Data目录中的所有文件夹中都有一个传入的子文件夹。 我想从除def / incoming和456 / incoming dirs之外的所有文件夹和子文件夹中获取所有文件。 我尝试了以下命令

find /home/feeds/data -type d \( -name 'def/incoming' -o -name '456/incoming' -o -name arkona \) -prune -o -name '*.*' -print

但它没有按预期工作。

拉维

I have directory structure like this

data |___ | abc |____incoming def |____incoming |____processed 123 |___incoming 456 |___incoming |___processed

There is an incoming sub-folder in all of the folders inside Data directory. I want to get all files from all the folders and sub-folders except the def/incoming and 456/incoming dirs. I tried out with following command

find /home/feeds/data -type d \( -name 'def/incoming' -o -name '456/incoming' -o -name arkona \) -prune -o -name '*.*' -print

but it is not working as expected.

Ravi

最满意答案

这样做:

find /home/feeds/data -type f -not -path "*def/incoming*" -not -path "*456/incoming*"

说明:

find /home/feeds/data :从指定的路径递归开始查找 -type f :仅查找文件 -not -path "*def/incoming*" :不包含任何与def/incoming作为其路径的一部分 -not -path "*456/incoming*" :不包含任何456/incoming作为其路径的一部分

This works:

find /home/feeds/data -type f -not -path "*def/incoming*" -not -path "*456/incoming*"

Explanation:

find /home/feeds/data: start finding recursively from specified path -type f: find files only -not -path "*def/incoming*": don't include anything with def/incoming as part of its path -not -path "*456/incoming*": don't include anything with 456/incoming as part of its path

更多推荐

本文发布于:2023-04-29 01:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1334533.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:子目录   find   Exclude

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!