我有一些文件(很像2000个文件),从b00123420151110121120.ext.123342
开始b00+id+datetime(YmdHms).ext.id2
。
我只需要列出某些日期的文件,例如... 20151106 ...我不关心其他任何事情,比如id或hourminutesecond,只有yearMonthDay。
我尝试使用awk和grep进行组合,但似乎无法正常工作
ls -1 dir/* | grep "20151106"
ls -1 dir/* | grep "*20151106*"
谢谢
答案 0 :(得分:3)
如果您的ID是4位数,则可以使用
ls b00????20151106*
获取具有特定日期的文件
ls b00????201?1106*
从2016获取所有201的文件?年
ls b00????201[45]*
获取2014年和2015年的所有文件等
答案 1 :(得分:2)
这是一个适用于任何id长度的解决方案:
find dir -regex '.*b00.*20151110......\.ext.*'
它的工作原理是匹配:我们知道日期后跟.ext
,我们不关心小时,分钟和秒。我们可以用6个点来匹配hhmmss。以下是模式的工作原理:
.* # match anything before, e.g. the name of the directory
b00 # file prefix
.* # id
2015 # year
11 # month
10 # day
.. # hour
.. # minutes
.. # seconds
\.ext.* # rest of the filename
您可以更改模式以匹配期间,例如当天使用..
来获取当月的所有文件,使用..
表示月份和日期以获得全年等等。