我想创建一个自动服务,以从文件名中的日期更改文件的创建日期。
文件名:“ 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
来遍历所有选定的文件。
答案 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