我有一个bash脚本,可以保存文件中的日期(最后一次更改),文件名,可能的更改次数等(类似于ls
输出)。
有没有办法在bash中搜索此文件,例如。获取最常用的文件或最新的文件,但只是文件名?
所以文件看起来像这样:
2018-03-28 19:47:41 filename1
2018-03-28 19:49:24 filename2
2018-03-28 19:50:14 filename1
2018-03-28 19:50:17 filename3
现在我想获取最后使用的文件,所以我将对它进行排序(它实际上已经排序),但我只想获取上次编辑的文件的文件名(最新日期) )。除了正则表达式之外还有办法做到这一点吗?
答案 0 :(得分:0)
如果我理解正确的话:
head -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3 # First line of foo.txt, only the filename
tail -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3 # Last line
会为您提供所需的行(感谢this)。如果foo.txt
已经排序,那么这些将是最早的和最新的。
将它们存储在变量中:
firstfn="$(head -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3)"
echo "First filename is $firstfn" # just a test
lastfn="$(tail -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3)"
如果您有awk
,则可以更简单地执行此操作(感谢this answer):
awk -- 'END { print $3; }' foo.txt
表示最后一行,或
awk -- '{ print $3; exit }' foo.txt
为第一行。同样处理变量,例如
firstfn="$(awk -- '{ print $3; exit }' foo.txt)"