问一个 Linux 批量修改文件名的方法

2022 年 6 月 22 日
 zachary99
我有一个目录,里面包含了 100 个文件名是纯数字的文件,比如连续的{1...100},当然还有其他文件.

我如何把这 100 个文件名批量修改为{file_1...file_100}.

正则表达式没学好。。。。
3775 次点击
所在节点    Linux
18 条回复
GLee9507
2022 年 6 月 22 日
脚本直接遍历?
zachary99
2022 年 6 月 22 日
@GLee9507 直接一个命令行应该就可以了吧
yfugibr
2022 年 6 月 22 日
`rename -v 's/^/file_/' *`
zhlxsh
2022 年 6 月 22 日
for i in {1..10}.txt;
do
mv $i "file_$i" ;
done
yfugibr
2022 年 6 月 22 日
@yfugibr #3 没看到有其他文件

`rename -v 's/^(\d+)$/file_${1}/' *`
这个应该可以,加上 -n 参数预览结果
allenloong
2022 年 6 月 22 日
如果是我直接在 excel 里粘好文件名,拼好命令
fileyeah
2022 年 6 月 22 日
ls *.txt | xargs -i mv {} file_{}
fileyeah
2022 年 6 月 22 日
@fileyeah ls *.txt | xargs -i bash -c “mv {} file_{}”
zachary99
2022 年 6 月 22 日
@yfugibr 你这个“\d”转义是啥意思
zachary99
2022 年 6 月 22 日
@fileyeah 参考了你这个,我解决了。
wenerme
2022 年 6 月 22 日
参考整理的各种 rename 方式
https://wener.me/notes/os/linux/shell/rename
yfugibr
2022 年 6 月 22 日
@zachary99 #9 正则,\d 匹配任意数字
darksword21
2022 年 6 月 22 日
用 emacs 的 dired
zachary99
2022 年 6 月 22 日
@yfugibr 明白了,\d 用得少忘记了。主要 centos 的 rename 是 c 版的,好像不支持正则。
xiaojun996
2022 年 6 月 23 日
看起来还是用脚本方便(方便阅读和封装下次使用)
franklinyu
2022 年 6 月 27 日
樓主可以考慮一下 Zsh ,其提供一個叫 zmv 的工具,或許可以比 ls - egrep - xargs 簡單
franklinyu
2022 年 6 月 27 日
另外類似帖子在本站好像不少: https://www.v2ex.com/t/859673
linuxgo
2022 年 8 月 18 日
正则肯定可以,而且强大,不过一般人都不知道怎么写。
我在 windows 下用 Totalcmd ,图形界面,简单易懂。linux 下有 TC 的弟弟 DC ,也有同样强大的功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861439

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX