在Unix中使用shell重命名多个文件

在Unix中使用shell重命名多个文件,shell,Shell,有许多文件和名称,如*.txt;如何将所有文件重命名为*YYYYMMDD.txt 使用shell脚本。因为这是一个移动操作,如果操作错误,可能会非常危险: 首先运行此命令,以确保脚本生成正确的命令 ls *.txt | while read FILE; do echo mv "$FILE" "${FILE/.txt/`date +%Y%m%d.txt`}"; done 那么当你确定 ls *.txt | while read FILE; do mv "$FILE" "${FILE/.txt/`

有许多文件和名称,如
*.txt
;如何将所有文件重命名为
*YYYYMMDD.txt

使用shell脚本。

因为这是一个移动操作,如果操作错误,可能会非常危险:

首先运行此命令,以确保脚本生成正确的命令

ls *.txt | while read FILE; do echo mv "$FILE" "${FILE/.txt/`date +%Y%m%d.txt`}"; done
那么当你确定

ls *.txt | while read FILE; do mv "$FILE" "${FILE/.txt/`date +%Y%m%d.txt`}"; done

您想添加示例吗?您的问题不清楚您想做什么。请查看
rename
命令(不同于标准C中的
rename()
函数)和
prename
命令。可能还有很多其他问题。@freespace:对于延迟响应,有很多文件,如a.txt、b.txt、c.txt,现在我将把所有文件重命名为Ayyyyymdd.txt、Byyyyymdd.txt、Cyyyyymdd.txt。@Jonathan Leffler:谢谢你的回复,我是UNIX shell的新手,所以我问了初始问题,非常感谢!检查这里:很高兴它有帮助:)另外,在循环之前只计算一次日期是有意义的。@user1244240,我对此表示怀疑。你能解释一下为什么需要ls吗?@glenn jackman:对于延迟响应,有很多文件,比如a.txt、b.txt、c.txt,现在,我将所有文件重命名为ayyyymdd.txt、byyyymdd.txt、cyyyymdd.txt。