Linux批量修改文件大小写

rename命令

Linux 服务器批量修改文件名的大小写,可以先输入安装 rename 命令

1
apt install rename

再执行修改命令

1
2
#目录下
find ./ -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

其中 L 是大写改成小写,U 是小写改成大写。

python脚本

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
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os, sys

def convert(rootdir, optype='l'):
"""
目录/文件名转换成小写或大写
:param rootdir: 要转换的根目录路径
:param optype: 操作类型(小写/大写) 小写:optype = 'l' 大写:optype = 'u',默认转换成小写
:return:
"""
dirlist = os.listdir(rootdir)
for index, onedir in enumerate(dirlist):
if optype == 'l':
cdir = onedir.lower()
elif optype == 'u':
cdir = onedir.upper()
subdir = os.path.join(rootdir, onedir)

if onedir != cdir: # 子目录或文件名不全为小写或大写
subcdir = os.path.join(rootdir, cdir)
os.rename(subdir, subcdir) # 把大写的目录或文件名命名成小写或大写
dirlist[index] = cdir
subdir = subcdir

# print(subdir)
if os.path.isdir(subdir):
convert(subdir, optype)

def help():
print("use: python convert.py 'rootDirPath' {optype:'l'/'u'}")

def main():
if len(sys.argv) == 2:
convert(sys.argv[1])
elif len(sys.argv) == 3:
convert(sys.argv[1], sys.argv[2])
else:
help()
exit(400)

if __name__ == '__main__':
main()

保存文件后执行:

1
2
# l(小写的L)是大改小;u是小改大
python convert.py "/var/www/webfuture/wwwroot/upload/history/main" "l"
--------------本文结束 感谢您的阅读--------------