我有一组文件名具有以下文件名格式<epochtimestamp>.topic-of-post.md
,例如1436310000.server-3-2-1.md
。
我需要将时间戳记部分以YYYY-MM-DD
的格式批量转换为人类可读的日期,例如2014-10-14.token-revocation.md
如何在Windows系统上自动执行此过程?我已经安装了Cygwin,并且掌握了bash脚本的一些基本知识。
答案 0 :(得分:1)
使用Perl rename
命令,您可以
rename 'use Time::Piece; s/(^\d+)/my $t = localtime($1); $t->ymd/e' [0-9]*.md
答案 1 :(得分:0)
如果有关系,您提供的时代印记与您使用的日期不符。
$: date -d@1436310000 +'%Y-%m-%d'
2015-07-07
浏览每个文件,切出历元,转换为新格式,然后重命名。告诉我们您尝试过的尝试是否会给您带来麻烦。
答案 2 :(得分:0)
# Get each file under the current directory
for f in *.md;
do
# Get the date portion of the file name
orig_date=$(echo "${f%%.*}");
# convert it to a human readable format
cnv_date="$(date -d@$orig_date +%Y-%m-%H)";
# rename
rename "${orig_date}.server-3-2-1" "${cnv_date}.token-revocation" $f;
done
这在GNU bash-4.2.26
和rename-2.23.2
上对我有用
如果没有rename
,则可以使用mv
命令。
mv "${orig_date}.server-3-2-1.md" "${cnv_date}.token-revocation.md"
或
mv "$f" "${cnv_date}.token-revocation.md"