批量规范化重命名大量的文件
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