技巧:Linux下如何快速大批量重命名

简介: 技巧:Linux下如何快速大批量重命名

1.背景


假设有这样一种情况,我们利用手机或相机拍了很多好看的照片,但是照片的命名很不规律,我们想把它统一为自己想要的风格。

在我的Linux下中,有很多我拍摄的照片,如下。

image.png


# 创建测试样本,可以使用以下命令
for name in {1..1000}; do  touch 2022-04-18-yunweizeichuan-${name}-test.jpg; done


2.最小化解决办法


解决一个大问题,往往是从解决一个最小单元着手,如果想为单个文件进行重命名,可以使用mv命令,比如:

mv 2022-04-18-yunweizeichuan-1-test.jpg 2022-04-18-yunweizeichuan-1.jpg

这样执行后,就能获得我们想要的结果。

image.png


我的思路是:

1.对单个文件进行重命名2.对单个文件通过变量的形式重命名3.对多个文件通过变量的形式重命名

对单个文件进行重命名,也就是使用mv命令,那对单个文件通过变量的形式重命名,则需要用到shell字串的知识。

${变量}              返回变量值
${#变量}             返回变量长度,字符长度
${变量:start}        返回变量offset数值之后的字符
${变量:start:length} 提取offset之后的length限制的字符
${变量#word}         从变量开头删除最短匹配的word子串
${变量##start}       从变量开头删除最长匹配的word子串
${变量%word}         从变量结尾删除最短匹配的word子串  
${变量%%word}        从变量结尾删除最长匹配的word子串 
${变量/pattern/string} 用string代替第一个匹配的pattern
${变量//pattern/string} 用string代替所有匹配的pattern

很显然,这里会用到替换的知识,也就是"用string代替第一个匹配的pattern"。我们换种方法,采用变量的方式对文件进行重命名:

filename=`ls 2022-04-18-yunweizeichuan-2-test.jpg`
mv $filename ${filename/-test/}

这里的string使用空格代替,表示2022-04-18-yunweizeichuan-2-test.jpg文件名将"-test"代替为空格,输出2022-04-18-yunweizeichuan-2.jpg


image.png


单个文件采用变量的形式重命名成功了,那如何把所有的文件都传递给变量使用呢?这里使用for循环。

for filename in `ls *test.jpg`;do echo $filename; done

这不就全部赋值给变量了吗?再结合一下单个文件变量重命名的方法:

for filename in `ls *test.jpg`;do mv $filename ${filename/-test/}; done

执行完成后,再次查看,发现所有文件都已经正确命名了。


image.png

相关文章
|
9月前
|
Unix Linux
完全指南:mv命令用法、示例和注意事项 | Linux文件移动与重命名
完全指南:mv命令用法、示例和注意事项 | Linux文件移动与重命名
1087 0
|
4天前
|
Linux
15. 【Linux教程】文件和目录重命名
15. 【Linux教程】文件和目录重命名
12 0
|
6月前
|
Linux Perl
Linux下重命名文件或文件夹
Linux下重命名文件或文件夹
36 0
|
10月前
|
Linux
在 Linux 中重命名文件夹中的所有文件
在 Linux 中重命名文件夹中的所有文件
141 0
在 Linux 中重命名文件夹中的所有文件
|
10月前
|
Linux
如何在 Linux 中复制和重命名文件?
如何在 Linux 中复制和重命名文件?
224 1
如何在 Linux 中复制和重命名文件?
|
Linux
Linux 常用命令-移动文件、目录、重命名文件
Linux、移动文件、目录、重命名文件
80 0
linux文件重命名命令
linux文件重命名命令有两个,分别是mv和rename。
|
Linux Shell 开发工具
【看表情包学Linux】man 手册 | 复制文件或目录 | 移动文件和重命名操作 | 查看目标文件内容(二)
本篇将继续讲解 Linux 基本命令行操作,对 Linux 手册、复制文件或目录、移动文件与重命名操作和查看目标文件内容进行讲解。我会手把手去演示操作每一个指令的用法以及常用选项,这些命令不需要可以的去记它,记不得就去翻一翻,用多了自然就会记住滴
207 0
【看表情包学Linux】man 手册 | 复制文件或目录 | 移动文件和重命名操作 | 查看目标文件内容(二)
|
Linux C语言 C++
【看表情包学Linux】man 手册 | 复制文件或目录 | 移动文件和重命名操作 | 查看目标文件内容(一)
本篇将继续讲解 Linux 基本命令行操作,对 Linux 手册、复制文件或目录、移动文件与重命名操作和查看目标文件内容进行讲解。我会手把手去演示操作每一个指令的用法以及常用选项,这些命令不需要可以的去记它,记不得就去翻一翻,用多了自然就会记住滴
154 0
【看表情包学Linux】man 手册 | 复制文件或目录 | 移动文件和重命名操作 | 查看目标文件内容(一)
|
Linux Windows
linux中的 ln 软链接、history 查看已经执行过历史命令linux中的> 输出重定向和 >> 追加、时间日期类、date 显示当前时间linux中的tail 输出文件尾部内容linux的rm 删除文件或目录、mv 移动文件与目录或重命名
linux中的 ln 软链接、history 查看已经执行过历史命令linux中的> 输出重定向和 >> 追加、时间日期类、date 显示当前时间linux中的tail 输出文件尾部内容linux的rm 删除文件或目录、mv 移动文件与目录或重命名
linux中的 ln 软链接、history 查看已经执行过历史命令linux中的> 输出重定向和 >> 追加、时间日期类、date 显示当前时间linux中的tail 输出文件尾部内容linux的rm 删除文件或目录、mv 移动文件与目录或重命名