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