如何在bash命令行中重命名文件和子目录?


1

在Rails中,有时我需要重命名几个目录和文件,例如:

app/models/person.rb
app/views/persons/_person.haml
app/controllers/persons_controller.rb
----
app/models/user.rb
app/views/users/_user.haml
app/controllers/users_controller.rb

我已经筋疲力尽地寻找解决方案了。有谁知道我可以安装一个简单的命令行工具?例如mvall . person user


3
查看右栏中的相关问题。这个问题有很多答案。
alecail

Answers:


1

我确信有更好的方法可以做到,但这是我的实施。

$ old=person; new=user; for i in $(find ./ -name "*$old*"); do mv $i $(echo $i | sed 's/'$old'/'$new'/g'); done

所有工具都是bash,所以不需要安装任何东西。


你也可以find用来执行你的改变(而不仅仅是找到目标),这可能取决于你是否更习惯find或者bash
Dominic Cronin

@Rusty:for i in $(find . …)如果文件名包含空格,则会失败。你不需要说“ ./”。
Scott

@Dominic:find如果在遍历目录树时重命名目录,是否保证表现得很好?
Scott

@Scott--好问题。不知道答案
多米尼克·克罗宁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.