我有一个目录,其中我将有一些日期格式(YYYYMMDD)的文件夹,如下所示 -
david@machineX:/database/batch/snapshot$ ls -lt
drwxr-xr-x 2 app kyte 86016 Oct 25 05:19 20141023
drwxr-xr-x 2 app kyte 73728 Oct 18 00:21 20141016
drwxr-xr-x 2 app kyte 73728 Oct 9 22:23 20141009
drwxr-xr-x 2 app kyte 81920 Oct 4 03:11 20141002
现在我需要从/database/batch/snapshot
目录中提取最新的日期文件夹,然后在我的shell脚本中构建命令,如下所示 -
./file_checker --directory /database/batch/snapshot/20141023/ --regex ".*.data" > shardfile_20141023.log
下面是我的shell脚本 -
#!/bin/bash
./file_checker --directory /database/batch/snapshot/20141023/ --regex ".*.data" > shardfile_20141023.log
# now I need to grep shardfile_20141023.log after above command is executed
如何在shell脚本中找到最新的日期文件夹并构造上述命令?
答案 0 :(得分:1)
看,这是方法之一,只是grep只有8位数的文件夹:
ls -t1 | grep -P -e "\d{8}" | head -1
或
ls -t1 | grep -E -e "[0-9]{8}" | head -1
答案 1 :(得分:0)
您可以在脚本中尝试以下操作:
pushd / database / batch / snapshot
LATESTDATE =`ls -d * | sort -n |尾巴-1`
POPD
./ file_checker --directory / database / batch / snapshot / $ {LATESTDATE} / --regex“。*。data”> shardfile _ $ {LATESTDATE}的.log
答案 2 :(得分:0)
请参阅BashFAQ#099 aka "How can I get the newest (or oldest) file from a directory?"。
话虽如此,如果您不关心实际的修改时间,只想根据名称找到最新的目录,您可以使用数组和通配(注意:带有globbing的排序顺序取决于{ {1}}):
LC_COLLATE