linux - 重命名文件夹中的部分多个文件
问题描述
我有多个文件如下
abcd_q1_2018.pdf
abcd_q2_2018.pdf
accc_q1_2018.pdf
accc_q2_2018.pdf
axxx_q2_2018.pdf
和一个包含
abcd 1111
accc 2222
axxx 3333
现在我想将上面的文件重命名为
1111_q1_2018.pdf
1111_q2_2018.pdf
2222_q1_2018.pdf
2222_q2_2018.pdf
3333_q2_2018.pdf
请帮忙。
解决方案
我喜欢 for 循环,所以这里有一些 for 循环!
外循环遍历重命名映射,内循环将重命名映射应用于目录中的每个文件。
IFS=$'\n' # So we can march through the map line-by-line
for key in `cat rename_map`; do
orig=`echo ${key} | awk '{print $1}'`
new=`echo ${key} | awk '{print $2}'`
for file in *_2018.pdf; do
new_file=`echo ${file} | sed -e "s/^${orig}/${new}/"` # ["] for variable sub
mv ${file} ${new_file} # Rename it!
done
done
推荐阅读
- javascript - requirejs 加载不正确的文件名和文件路径
- typescript - 目录中所有文件的 TsConfig.json 路径匹配
- angular - Angular6/MD PWA 与 Ionic 3 + Angular 6 PWA
- python - 在 UEFI Shell 中运行子进程模块
- symfony - 通过 cookie 进行 Symfony/安全认证
- sql-server - 在不同 SQL Server 上计算的标准差差异
- http - 使用 Microsoft-HTTPAPI 服务器自定义响应标头
- java - 如何从 Json 对象更新 Java (Ebean) 对象
- python - Matplotlib:如果绘制了 numpy.nan 值,则不显示堆积条
- php - 如何防止 web socket DDOS 攻击?