UP | HOME

批量规范化重命名大量的文件

Table of Contents

大量修改文件名非常麻烦,本人曾经不厌其烦地用 Windows 文件管理器点开一个个文件夹 后修改文件名,非常苦逼。自从用了 EMACS 的 dired 模式过后就回不去了,但是一些服务 器上往往没有安装 EMACS,所以可以总结下面的发放来批量修改文件名。

1 使用 vim 和 find 进行命名

1.1 第一步

将需要修改的文件名全面找到放到 /tmp 目录下的两个文件里面,文件 a 里面存放原来的文 件名,文件 b 通过 vim 编辑成修改后的文件。注意文件 a 里面的文件名或者目录名的空格 需要转义。

find . -type f -iname '*.txt' | tee /tmp/b | sed 's/ /\\ /' > /tmp/a
vim /tmp/b

或者使用下面的命令,在 find 找到的文件前后添加单引号

find . -type f -iname '*.txt' | tee /tmp/b | sed "s/$/'/" | sed "s/^/'/" > /tmp/a

1.2 第二步

编辑好文件/tmp/b 保存后用下面命令批量重命名。

paste /tmp/a /tmp/b | xargs -n 2 mv

2 使用 emacs 的 dired 进行重命名

emacs 的 dired-mode 可以直接浏览文件,使用 wired-dired-mode 可以绑定当前目录的 文件到当前的 dired 的 buffer 上,然后使用 query-replace 替换文件名后,使用 "C-c C-c" 应用修改。

(wdired-change-to-wdired-mode) ; C-c C-q
(wdired-finish-edit) ; C-c C-c

Last Updated 2020-02-22 Sat 20:06. Created by Jinghui Hu at 2018-10-05 Fri 11:04.