我在网上搜索了多个网站,但似乎找不到解决方案,手册页也不清楚(我是 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 in
ls -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