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

2022-06-22 17:23:51 +08:00
 zachary99
我有一个目录,里面包含了 100 个文件名是纯数字的文件,比如连续的{1...100},当然还有其他文件.

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

正则表达式没学好。。。。
2606 次点击
所在节点    Linux
18 条回复
GLee9507
2022-06-22 17:25:41 +08:00
脚本直接遍历?
zachary99
2022-06-22 17:27:51 +08:00
@GLee9507 直接一个命令行应该就可以了吧
yfugibr
2022-06-22 17:29:59 +08:00
`rename -v 's/^/file_/' *`
zhlxsh
2022-06-22 17:31:12 +08:00
for i in {1..10}.txt;
do
mv $i "file_$i" ;
done
yfugibr
2022-06-22 17:32:01 +08:00
@yfugibr #3 没看到有其他文件

`rename -v 's/^(\d+)$/file_${1}/' *`
这个应该可以,加上 -n 参数预览结果
allenloong
2022-06-22 17:57:05 +08:00
如果是我直接在 excel 里粘好文件名,拼好命令
fileyeah
2022-06-22 18:00:47 +08:00
ls *.txt | xargs -i mv {} file_{}
fileyeah
2022-06-22 18:01:27 +08:00
@fileyeah ls *.txt | xargs -i bash -c “mv {} file_{}”
zachary99
2022-06-22 18:18:55 +08:00
@yfugibr 你这个“\d”转义是啥意思
zachary99
2022-06-22 18:21:25 +08:00
@fileyeah 参考了你这个,我解决了。
wenerme
2022-06-22 18:27:25 +08:00
参考整理的各种 rename 方式
https://wener.me/notes/os/linux/shell/rename
yfugibr
2022-06-22 18:41:39 +08:00
@zachary99 #9 正则,\d 匹配任意数字
darksword21
2022-06-22 18:45:06 +08:00
用 emacs 的 dired
zachary99
2022-06-22 18:46:49 +08:00
@yfugibr 明白了,\d 用得少忘记了。主要 centos 的 rename 是 c 版的,好像不支持正则。
xiaojun996
2022-06-23 14:08:50 +08:00
看起来还是用脚本方便(方便阅读和封装下次使用)
franklinyu
2022-06-27 04:29:27 +08:00
樓主可以考慮一下 Zsh ,其提供一個叫 zmv 的工具,或許可以比 ls - egrep - xargs 簡單
franklinyu
2022-06-27 04:37:53 +08:00
另外類似帖子在本站好像不少: https://www.v2ex.com/t/859673
linuxgo
2022-08-18 16:28:50 +08:00
正则肯定可以,而且强大,不过一般人都不知道怎么写。
我在 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