既然你都打算用脚本来处理了,那为啥不用python呢?
python轻松搞定,脚本如下:
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import sys
import os
import re
def main():
path = sys.argv[1]
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
newname = re.sub('[ \((]+', '_', filename)
newname = re.sub('[\))]+', '', newname)
if filename != newname:
print('rename> {}: {} => {}'.format(dirpath, filename, newname))
os.rename(os.path.join(dirpath, filename), os.path.join(dirpath, newname))
if __name__ == '__main__':
main()
测试执行结果如下:
$ find csv
csv
csv/lf-orders-2018-11-20 17002.csv
csv/ccc
csv/ccc/lf-orders-2018-11-20 17002.csv
csv/ccc/csv
csv/ccc/csv/lf-orders-2018-11-20 17002.csv
csv/ccc/csv/ccc
csv/ccc/csv/ccc/lf-orders-2018-11-20 17002.csv
csv/lf-orders-2018-11-20(1700).csv
$ ./z.py csv
rename> csv: lf-orders-2018-11-20 17002.csv => lf-orders-2018-11-20_17002.csv
rename> csv: lf-orders-2018-11-20(1700).csv => lf-orders-2018-11-20_1700.csv
rename> csv/ccc: lf-orders-2018-11-20 17002.csv => lf-orders-2018-11-20_17002.csv
rename> csv/ccc/csv: lf-orders-2018-11-20 17002.csv => lf-orders-2018-11-20_17002.csv
rename> csv/ccc/csv/ccc: lf-orders-2018-11-20 17002.csv => lf-orders-2018-11-20_17002.csv
$ find csv
csv
csv/lf-orders-2018-11-20_17002.csv
csv/ccc
csv/ccc/lf-orders-2018-11-20_17002.csv
csv/ccc/csv
csv/ccc/csv/lf-orders-2018-11-20_17002.csv
csv/ccc/csv/ccc
csv/ccc/csv/ccc/lf-orders-2018-11-20_17002.csv
csv/lf-orders-2018-11-20_1700.csv