如何使用子目录异常对所有嵌套文件进行全局处理

时间:2014-05-16 19:03:23

标签: shell glob

我正在尝试使用shell globbing来获取所有嵌套的matchin文件夹,除了特定目录中的那些

|__foo
|  |__foo.txt
|__bar
|  |__bar.txt
|__baz
|  |__baz.txt

我可以回球吗

bar/bar.txtbaz/baz.txt

要包含的文件夹会有所不同,所以我需要明确地排除foo目录。这可能吗?

PSEUDO CODE

类似于[**|!foo]/*.txt

1 个答案:

答案 0 :(得分:3)

在bash中,您可以使用extended globbing

为您的例子

$ find
.
./bar
./bar/bar.txt
./biz
./biz/biz.txt
./foo
./foo/foo.txt

# turn on extended globbing
$ shopt -s extglob

# Match files not in foo
$ ls !(foo)/*
bar/bar.txt  biz/biz.txt

# Match files in neither foo nor bar
$ ls !(foo|bar)/*
biz/biz.txt