Linux批量重命名文件

在当 TA 时候,要给本科生改 program 作业,批量下载的文件名又长又臭,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-rw-r--r--  1 mac  staff   4.0K Mar 27 13:36 Program 1_and7697_attempt_2018-03-22-16-56-45_and7697_p1.s
-rw-r--r-- 1 mac staff 1.3K Mar 27 13:36 Program 1_axg6672_attempt_2018-03-20-14-13-01_axg6672_p1.s
-rw-r--r-- 1 mac staff 799B Mar 27 13:36 Program 1_axk5863_attempt_2018-03-21-23-31-29_axk5863_p1.s
-rw-r--r-- 1 mac staff 797B Mar 27 13:36 Program 1_axr8361_attempt_2018-03-21-22-27-28_axr8361_p1.s
-rw-r--r-- 1 mac staff 1.1K Mar 27 13:36 Program 1_bxk5485_attempt_2018-03-21-21-19-30_bxk5485_p1.s
-rw-r--r-- 1 mac staff 1.7K Mar 27 13:36 Program 1_cra5824_attempt_2018-03-19-09-43-14_cra5824_p1.s
-rw-r--r-- 1 mac staff 1.7K Mar 27 13:36 Program 1_cxx4741_attempt_2018-03-21-21-13-51_cxx4741_p1.s
-rw-r--r-- 1 mac staff 1.5K Mar 27 13:36 Program 1_daa5782_attempt_2018-03-21-16-23-26_daa5782_p1.s
-rw-r--r-- 1 mac staff 4.8K Mar 27 13:36 Program 1_dbp4110_attempt_2018-03-16-23-09-09_dbp4110_p1.s
-rw-r--r-- 1 mac staff 1.9K Mar 27 13:36 Program 1_dtn5102_attempt_2018-03-20-20-29-06_dtn5102-p1.s
-rw-r--r-- 1 mac staff 2.1K Mar 27 13:36 Program 1_eep5180_attempt_2018-03-21-23-23-13_eep5180_p1.s
-rw-r--r-- 1 mac staff 3.6K Mar 27 13:36 Program 1_egc8644_attempt_2018-03-23-22-02-19_egc8644_p1.s
-rw-r--r-- 1 mac staff 969B Mar 27 13:36 Program 1_exg6686_attempt_2018-03-21-22-30-05_exgg6686_p1.s
...

所以就想把他们重命名一下,变成只有 xxx1111.s 的形式。查找了一些 Linux 下批量重命名的方法,总结如下:

cut 命令

这里使用 cut 命令截取文件名中想要的一段字符,然后再尾部添加 .s 共同构成新的文件名。

1
2
3
4
5
for name in *.s
do
newname="$(echo "$name" | cut -c 11-17)".s
mv "$name" "$newname"
done
0%