从文件名中的日期设置创建日期

时间:2019-08-28 13:25:47

标签: bash shell automator

我想创建一个自动服务,以从文件名中的日期更改文件的创建日期。

文件名:“ 2014-02-02 Lorem Ipsum.md”或“ 20190828719 Lorem Ipsum.md”。

如果有一种方法可以将两者都构建到一个服务中,那么这是惊人的,但是两个也可以。不在乎时间,只是在约会。

#Note: Filename = "2014-02-02 Lorem Ipsum.md"

$ BASENAME=$(basename $f)
$ TITLE=${BASENAME%.*}

$ echo "$TITLE" | cut -d" " -f1

2014-02-02
Lorem
Ipsum

$ #TOUCH - Something

我假设我将使用某种for f do done来遍历所有选定的文件。

1 个答案:

答案 0 :(得分:1)

您可以使用sed设置时间格式并将其分配给touch

for i in *.md; do 
   touch -d $(sed 's/[^0-9]//g;s/^\(.\{8\}\).*/\1/' <<< "$i") "$i"
done

sed正则表达式删除所有无数字的字符,仅保留剩余的前8个字符。

-d的{​​{1}}选项将修改时间设置为给定日期。此选项可能是GNU特定的,在macosx系统上不可用。

在macosx上,您可以使用命令touch(信用:here):

SetFile