Regex 查找上次修改的文件以匹配目录中的简单通配符正则表达式

Regex 查找上次修改的文件以匹配目录中的简单通配符正则表达式,regex,bash,grep,find,Regex,Bash,Grep,Find,我在linux环境中工作,我需要找到最后修改的文件以匹配简单的正则表达式。例如: testname_20150328.csv #Last modified 2015-05-12 testname_20150501.csv #Last modified 2015-05-01 testname_20140328.csv #Last modified 2014-03-28 notamatch.csv alsonotamatch.csv 因此,这种情况下的模式将是“testname*.csv”。我忽略

我在linux环境中工作,我需要找到最后修改的文件以匹配简单的正则表达式。例如:

testname_20150328.csv #Last modified 2015-05-12
testname_20150501.csv #Last modified 2015-05-01
testname_20140328.csv #Last modified 2014-03-28
notamatch.csv
alsonotamatch.csv
因此,这种情况下的模式将是“testname*.csv”。我忽略了通配符的值,只是从文件夹中提取最后修改的文件。我希望请求的输出类似于

./testname_20150328.csv
我遇到的主要问题是我一直在运行以下命令

ls -p -t . | grep -v / | head -1
这会给出最后修改的文件,但不会根据正则表达式筛选出文件,或者

find -name "testname_*.csv"

与正则表达式匹配,但不让我了解上次修改时间的详细信息。有什么办法吗?

科斯塔斯贴出了我看不见的答案

ls -p -t testname_*.csv | head -1
这正是我所需要的。

一种适用于任何合法文件名的解决方案,包括那些包含换行符的文件名(它阻止解析
ls
的输出):


stat
的确切调用可能会有所不同(所示为GNU
stat
),因为POSIX规范没有涵盖它。

试试
ls-p-t testname*.csv | head-1
,当然很简单,谢谢
max_mod_time=0
for f in testname_*.csv; do
    last_mod_time=$(stat -c %Y "$f")
    [ "$last_mod_time" -gt "$max_mod_time" ] || continue

    last_mod_time=$max_mod_time
    last_mod=$f
done