使用find排除子目录(Exclude a sub-directory using find)
我有这样的目录结构
data |___ | abc |____incoming def |____incoming |____processed 123 |___incoming 456 |___incoming |___processedData目录中的所有文件夹中都有一个传入的子文件夹。 我想从除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 |___processedThere 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 '*.*' -printbut 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更多推荐
发布评论