批量文件改名案例实战:
把下面所有文件的文件名中的finished内容去掉
1
2
3
4
5
6
7
8
|
[root@XCN
test
]
# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_1_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_2_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_3_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_4_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:29 xcn_5_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:26 xcn_6_finished.jpg
|
方法1:shell脚本for循环结合sed实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/bin/bash
for
file
in
`
ls
./*.jpg`
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
do
mv
$
file
`
echo
$
file
|
sed
's/finished//g'
`
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
done
执行后结果
[root@XCN
test
]
# ll
total 4
-rw-r--r-- 1 root root 87 Jun 20 10:35 finished.sh
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_1_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_2_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_3_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:25 xcn_4_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:29 xcn_5_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:26 xcn_6_.jpg
|
方法二:shell脚本for循环加变量的部分截取方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/bin/bash
#xcn qq:995345781
for
file
in
`
ls
./*.jpg`
do
/bin/mv
$
file
`
echo
"${file%finished*}.jpg"
`
#这里就是变量的截取新方法
done
执行后结果:
[root@XCN
test
]
# ll
total 4
-rw-r--r-- 1 root root 108 Jun 20 10:41 change_file_name.sh
-rw-r--r-- 1 root root 0 Jun 20 10:38 xcn_1_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:38 xcn_2_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:39 xcn_3_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:39 xcn_4_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:38 xcn_5_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:38 xcn_6_.jpg
|
方法三:ls结合awk实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
[root@XCN
test
]
# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_1_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_2_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_3_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_4_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_5_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_6_finished.jpg
[root@XCN
test
]
# ls |awk -F 'finished' '{print $0}'
xcn_1_finished.jpg
xcn_2_finished.jpg
xcn_3_finished.jpg
xcn_4_finished.jpg
xcn_5_finished.jpg
xcn_6_finished.jpg
[root@XCN
test
]
# ls |awk -F 'finished' '{print $1}'
xcn_1_
xcn_2_
xcn_3_
xcn_4_
xcn_5_
xcn_6_
[root@XCN
test
]
# ls |awk -F 'finished' '{print $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
.jpg
[root@XCN
test
]
# ls |awk -F 'finished' '{print $1$2}'
xcn_1_.jpg
xcn_2_.jpg
xcn_3_.jpg
xcn_4_.jpg
xcn_5_.jpg
xcn_6_.jpg
[root@XCN
test
]
# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
[root@XCN
test
]
# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_1_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_2_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_3_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_4_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_5_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:44 xcn_6_.jpg
[root@XCN
test
]
#
|
方法四:通过专业的改名命令rename实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@XCN
test
]
# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_1_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_2_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_3_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_4_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_5_finished.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:58 xcn_6_finished.jpg
[root@XCN
test
]
# rename "finished" "" *
[root@XCN
test
]
# ll
total 0
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_1_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_2_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_3_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_4_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:59 xcn_5_.jpg
-rw-r--r-- 1 root root 0 Jun 20 10:58 xcn_6_.jpg
|
本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1940123