gpt4 book ai didi

bash - Ubuntu Bash 脚本按时间顺序更改文件名

转载 作者:行者123 更新时间:2023-12-04 19:04:06 24 4
gpt4 key购买 nike

我有这个 bash 脚本,我试图将目录中的所有 *.txt 文件更改为其最后修改的日期。这是脚本:

#!/bin/bash
# Renames the .txt files to the date modified
# FROM: foo.txt Created on: 2012-04-18 18:51:44
# TO: 20120418_185144.txt
for i in *.txt
do
mod_date=$(stat --format %y "$i"|awk '{print $1"_"$2}'|cut -f1 -d'.'|sed 's/[: -]//g')
mv "$i" "$mod_date".txt
done

我得到的错误是:
renamer.sh: 6: renamer.sh: Syntax error: word unexpected (expecting "do")

任何帮助将不胜感激。感谢您的时间。

最佳答案

我总是很惊讶地看到人们如何在管道方面变得非常聪明grep直通sed直通awk直通cut直通head s 和 tail小...

在您的特殊情况下,您真的很幸运,因为 date命令可以格式化文件的修改日期(使用 -r 选项)!

因此,

#!/bin/bash

# It's a good idea to use one of the two:
shopt -s failglob
# shopt -s nullglob

for i in *.txt; do
mod_date=$(date -r "$i" +'%Y%m%d_%H%M%S')
mv "$i" "$mod_date.txt"
done

应该做的伎俩。

关于 nullglobfailglob : 如果没有匹配的文件 *.txt ,然后脚本会以错误退出(使用 failglob 时),或者,如果使用 nullglob ,没有任何 react ,因为在这种情况下 *.txt扩展为无。

关于bash - Ubuntu Bash 脚本按时间顺序更改文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13656366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com