我想要一堆名称包含csv
或ABC
的{{1}}文件的唯一标头。
在一个目录中,我可以通过以下方式获得所需的东西:
XYZ
当然,这不是递归的,它包括所有 head -n ` *.csv > first.txt
cat -A first.txt | tr ',' '\n' | sort | uniq
文件,而不仅仅是我想要的文件。
如果我执行以下操作,则会得到递归搜索,但也会遇到一堆垃圾:
csv
我在使用MinGW64的Windows 10上。我想我可以使用Python,但是感觉非常接近!
答案 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