Shell 从最新文件中读取第一行

Shell 从最新文件中读取第一行,shell,Shell,我正在按照要求工作,我需要读取目录下最新文件的第一行。在一个目录中,我可以有多个文件,但我想把最新文件的第一行读出所有文件名中包含PPP的文件 我知道如何读取文件的第一行并写入文件 head -n 1 jsonPPPvp.txt > output.txt 但是,如何从目录中包含PPP的所有文件中选择最新的文件(根据时间戳) 有什么建议请 我已经编写了一个命令这可能不是最好的解决方案,但它可以工作(根据最新的文件,我考虑了使用最新的时间戳修改的文件): 文件内容: cat file1PPP

我正在按照要求工作,我需要读取目录下最新文件的第一行。在一个目录中,我可以有多个文件,但我想把最新文件的第一行读出所有文件名中包含PPP的文件

我知道如何读取文件的第一行并写入文件

head -n 1 jsonPPPvp.txt > output.txt
但是,如何从目录中包含PPP的所有文件中选择最新的文件(根据时间戳)

有什么建议请


我已经编写了一个命令

这可能不是最好的解决方案,但它可以工作(根据最新的文件,我考虑了使用最新的时间戳修改的文件):

文件内容:

cat file1PPP 
a
b
c
命令:

find .  -type f -maxdepth 1 -name '*PPP*' -printf '%T+ %p\n' | sort -r | head -1 | cut -d' ' -f2 | xargs head -1
a

当心文件名中的空格

这可能不是最好的解决方案,但它很有效(根据最新的文件,我考虑了使用最新的时间戳修改的文件):

temp = `ls -Art | head -n 1 `
head -1 $temp 
文件内容:

cat file1PPP 
a
b
c
命令:

find .  -type f -maxdepth 1 -name '*PPP*' -printf '%T+ %p\n' | sort -r | head -1 | cut -d' ' -f2 | xargs head -1
a
当心文件名中的空格

head-n1$(find./-name“*PPP*”-type f|xargs ls-rt1|tail-n1)

temp = `ls -Art | head -n 1 `
head -1 $temp 
上述命令的缺点是目录中必须有
*PPP*
文件,否则该命令会产生错误的结果。


上述命令的缺点是,您的目录中必须有
*PPP*
文件,否则该命令会产生错误的结果。

在命令替换中使用
find
-print0
以及
xargs-0

您的最佳解决方案,尽管仍需要4个子壳,通过让
find
输出nul终止的文件名,可以与
xargs-0
一起使用,形成一个nul终止的文件名列表,传递给
ls
进行排序,反向选择带有
tail-n1
的最后一个文件和该文件中的第一行,从而防止文件名中的所有警告带有
头部-n1

使用
-maxdepth 1
选项查找将搜索限制在当前目录,并防止递归到子目录(如果要搜索当前目录下的整个目录树,请将其删除),例如


除了使用以nul结尾的文件名外,它还将受益于让
xargs
形成列表进行排序,而不是循环查找最新的文件名。

在命令替换中使用
find
-print0
xargs-0

您的最佳解决方案,尽管仍需要4个子壳,通过让
find
输出nul终止的文件名,可以与
xargs-0
一起使用,形成一个nul终止的文件名列表,传递给
ls
进行排序,反向选择带有
tail-n1
的最后一个文件和该文件中的第一行,从而防止文件名中的所有警告带有
头部-n1

使用
-maxdepth 1
选项查找将搜索限制在当前目录,并防止递归到子目录(如果要搜索当前目录下的整个目录树,请将其删除),例如

除了使用以nul结尾的文件名外,它还将受益于让
xargs
形成列表进行排序,而不是循环查找最新的文件名。

您也可以尝试以下方法:

ls -tr | grep "PPP" | tail -n 1 | xargs head -n 1
您也可以尝试以下方法:

ls -tr | grep "PPP" | tail -n 1 | xargs head -n 1

如果恰好存在子目录会发生什么?如果存在子目录而不是ls,我们可以使用
find-type f-name*| sort | head-n1
如果存在子目录会发生什么?如果存在子目录而不是ls,我们可以使用
find-type f-name*| sort | head-n1
如果存在子目录会发生什么一个
PPPold/
目录?(将
-type f
选项添加到
find
),您不需要
-maxdepth 1
选项来防止递归查找吗?如果存在
PPPold/
目录,会发生什么情况?(将
-type f
选项添加到
find
),您不需要
-maxdepth 1
选项来防止递归查找吗?