gpt4 book ai didi

linux - 有没有办法在 Linux 中获取文件名列表和在同一行列出的第一行文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:57 29 4
gpt4 key购买 nike

我正在尝试获取目录中的文件名列表和每个文件的第一行文本,并将每一对输出到一行以输出到 .csv 文件。

我已经尝试了很多不同的方法来使用 head、ls、find 和 grep 以及这些方法的组合,但似乎无法将结果打印到一行中。我最接近的是让他们在不同的行上打印。

这是我需要的输出示例:

filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"

我真的不关心结果中是否有额外的字符或任何内容,因为一旦我将它们放在同一行,我就可以在 Excel 中轻松地对其进行编辑。

如有任何帮助,我们将不胜感激。

最佳答案

要获取目录中所有文件的文件名和第一行,请尝试:

awk '{print FILENAME" \"" $0"\""; nextfile}' *

要获取名称以 328 开头的所有文件的文件名和第一行,请尝试:

awk '{print FILENAME" \"" $0"\""; nextfile}' 328*

例子

考虑一个包含这两个文件的目录:

$ cat filename1.txt
this is the first line of text
2
3
$ cat filename2.txt
this is the first line of text
b
c

现在,运行我们的命令:

$ awk '{print FILENAME" \"" $0"\""; nextfile}' *
filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"

工作原理

  • `awk '{...}' *

    这将启动 awk 并运行大括号内的命令。使用 glob *,这将针对所有文件运行。例如,glob 可以限制为 328*.txt,以处理名称以 328 开头并以 .txt 结尾的所有文件.

    默认情况下,awk 将依次为每个文件一次读取一行。

  • 打印文件名"\""$0"\""

    这告诉 awk 打印文件名,后面是 ",然后是第一行 $0,然后是另一个 "

  • 下一个文件

    因为我们没有兴趣阅读第二行,所以这告诉 awk 跳到下一个文件。

保存到文件

我们可以将第一行保存到这样的文件中:

$ awk '{print FILENAME" \"" $0"\""; nextfile}' *.txt >output.txt

output.txt 文件如下所示:

$ cat output.txt
filename1.txt "this is the first line of text"
filename2.txt "this is the first line of text"

关于linux - 有没有办法在 Linux 中获取文件名列表和在同一行列出的第一行文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55410624/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com