递归文件匹配模式的唯一标头列表

时间:2019-04-25 17:34:40

标签: python bash grep xargs unix-head

我想要一堆名称包含csvABC的{​​{1}}文件的唯一标头。

在一个目录中,我可以通过以下方式获得所需的东西:

XYZ

当然,这不是递归的,它包括所有 head -n ` *.csv > first.txt cat -A first.txt | tr ',' '\n' | sort | uniq 文件,而不仅仅是我想要的文件。

如果我执行以下操作,则会得到递归搜索,但也会遇到一堆垃圾:

csv

我在使用MinGW64的Windows 10上。我想我可以使用Python,但是感觉非常接近!

1 个答案:

答案 0 :(得分:1)

head分配了多个文件(xargs这样做)时,它也会打印其名称。

使用find的{​​{1}}动作(您应强制使用-exec的优先级使其起作用),可以获得所需的结果。这里也不需要-name 'ABC*.csv' -o -name 'XYZ*.csv,sort可以自己完成。另外,最好将文字字符串用单引号引起来。

uniq

如果您的文件具有DOS行结尾,则上述命令将不起作用。在这种情况下,您应该使用find . -type f \( -name 'ABC*.csv' -o -name 'XYZ*.csv' \) -exec head -n 1 {} \; | tr ',' '\n' | sort -u tr删除回车符:

sed