用于查找文件夹的Shell脚本

时间:2016-09-08 19:22:37

标签: bash shell

我在位置/Users/skull/Desktop上有几个randoms日期文件夹 我想选择/找到今天日期的文件夹,如果没有,那么选择最接近今天的日期。不应该采取高日期文件夹 例如:今天日期2016-09-08因为我们没有2016-09-08文件夹,所以它应该花费较少的最近日期2016-09-062016-09-06不是那里{{1} }}

文件夹名称:

2016-08-30

我到目前为止的代码:

2016-07-015
2016-07-27
2016-08-30
2016-09-05
2016-09-06
2016-09-10
2016-09-15
2016-09-20

4 个答案:

答案 0 :(得分:2)

以相反的顺序输出名称。然后使用awk脚本打印第一个小于或等于当前日期的脚本。

DATA_FOLDER=$(ls -r "$location" | awk -v day=$DAY '$0 <= day {print; exit}')

答案 1 :(得分:1)

永远不要解析db.models.transaction.create()输出:http://mywiki.wooledge.org/ParsingLs

更好地使用lsprintf

awk

答案 2 :(得分:0)

感谢@Barmar @James Brown的帮助。下面是我qus的最终工作脚本:)

location=/Users/Skull/Desktop
DAY=$(date +"%Y-%m-%d")
#today date = 2016-09-09
DATA_FOLDER=$(ls -r "$location" | awk -v day=$DAY '$0 <= day {print; exit}')
echo "$DATA_FOLDER"
#Result = 2016-09-06

答案 3 :(得分:-1)

我会这样做:

DATA_FOLDER="$(ls "$location" | grep -P '^\d{4}-d{2}-d{2}$' | sed "/^$(date +%F)\$/q" | tail -n1)"

我使用ls查找所有文件,只过滤名称为日​​期的文件,将这些文件保存到与今天相对应的日期,最后丢弃除最后一个之外的所有文件,必须是今天的日期或最近的日期。