我在目录中有一些文件,文件名的模式是:“CUST_YYYYMMDDHHMMSS.csv”。我正在使用下面的命令来找出那些文件,但它什么也没有返回。
find . -maxdepth 1 -regex '.*CUST.*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.csv.*' -print
答案 0 :(得分:0)
尝试
find . -maxdepth 1 -regex '\.\/CUST_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.csv' -print
如果正在搜索给定路径,请尝试
find ~/ -maxdepth 1 -regex '\/\w.*CUST_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.csv' -print
如果有人希望验证date_time
,可以尝试使用以下awk
脚本。
#!/usr/bin/gawk -f
{
i = 1
# Let's split the datetime into Year, Month, Day, Hour, Minute and Second.
# We can validate each value separately.
match($0, /\.\/(CUST_)([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/, arr);
if (arr[2] <= "1900" || arr[2] >= "2099")
i = 0
if (arr[3] < "1" && arr[3] > "12")
i = 0
if (arr[4] < "1" && arr[4] > "31")
i = 0
#print "Invalid day"
if (arr[5] > "23")
i = 0
#print "Invalid hour"
if (arr[6] > "59")
i = 0
#print "Invalid minute"
if (arr[7] > "59")
i = 0
#print "Invalid second"
if (i == "1")
print $0
}
用法: find . -maxdepth 1 -regex '\.\/CUST_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.csv' -print | ./validate
上述脚本故意保持非常冗长,可以重构以提高效率。