根据修改日期重命名多个文件

根据修改日期重命名多个文件

我在网上搜索了多个网站,但似乎找不到解决方案,手册页也不清楚(我是 CLI 新手)。这是我的问题:我的目录中有大约 200 个文件,这些文件没有扩展名,并且命名不正确。

为了简单起见,假设所有文件都是这样的:

Delta ---   2.0K ---  01/01/1993
Gamma ---   2.1k ---  01/01/1991
Alfa  ---   2.2k ---  04/15/1992
Bravo ---   2.3k ---  04/10/1992

我想要做的是:

以 1、2、3、.. 的方式重命名所有文件,但名称是根据整个日期(而不仅仅是年份或月份)设置的,因此输出应类似于

1 ---   2.1k ---  01/01/1991
2 ---   2.3k ---  04/10/1992
3 ---   2.2k ---  04/15/1992
4 ---   2.0k ---  01/01/1993

另外,我想添加扩展名,例如 .TXT,以便最终输出可以是:

1.txt ---   2.1k ---  01/01/1991
2.txt ---   2.3k ---  04/10/1992
3.txt ---   2.2k ---  04/15/1992
4.txt ---   2.0k ---  01/01/1993

答案1

我以前做过类似的事情,我可以向你保证,很容易犯错,这会给你带来比现在更大的问题。使用此信息需要你自担风险。

在 bash 提示符下;

i=0 ; for f in `ls -rt` ; do i=$(expr $i + 1); mv $f $i.txt; done
  • i充当柜台
  • ls -rt按相反顺序列出文件修改时间 - 如果您复制、移动或以其他方式修改了文件,这可能不会为您提供您期望的文件顺序。请通过ls -rt作为单独的命令运行来仔细检查并检查两次。
  • for f inls -rt; do迭代文件列表,并使用“f”获取每个文件名
  • i=$(expr $i + 1)增加计数器
  • mv $f $i.txt使用计数器重命名文件,并添加 .txt 扩展名
  • done闭环
  • 请注意,循环中的命令以分号分隔,因此如果添加另一个命令,请在其后加上分号

答案2

通过python,

script.py

import os
import shutil
directory = sys.argv[1]
count = '0'
for item in os.listdir(directory):
    count = str(int(count)+1)
    newname = re.sub(r'.*', count+'.txt', item)
    shutil.move(directory+"/"+item, directory+"/"+newname)

怎么跑?

python3 script.py /path/to/the/directory

相关内容