Bash:查找并连接两位数的文件名

时间:2017-02-14 14:26:05

标签: regex bash

我正在尝试在一组目录中找到csv文件的所有实例,并将它们连接成一个csv文件。

问题是目录已编号。我只想要以两位数结尾的目录。例如,我想要目录RUN11,RUN12等,但不是RUN1,RUN2。

如果我不关心有两位数字,我会这样做(来自here

userInput

我试过了:

find $(pwd)/RUN* -name '*csv' |xargs cat > big_cat_file.csv

但它没有说这样的文件或目录。

如何从名称如RUN11,RUN12但不是RUN1,RUN2的目录中获取csv文件?

1 个答案:

答案 0 :(得分:3)

您正在尝试使用正则表达式语法,您需要使用glob。

您只需要指定范围两次,而不是使用{2}

find "$PWD"/RUN[0-9][0-9] -name '*csv' |xargs cat > big_cat_file.csv

(请注意[!0-9]匹配数字之外的任何单个字符。)

要容纳可能与*csv匹配的任何合法文件名,您应使用-exec主文件而不是xargs。 (考虑如果文件名包含空格,或者在最坏的情况下,换行符会发生什么。)

    find "$PWD"/RUN[0-9][0-9] -name '*csv' -exec cat {} + > big_cat_file.csv

这不仅适用于任何有效的文件名,而且可以最大限度地减少对cat的调用次数。