Wie benennt man Dateien und Unterverzeichnisse in der Bash-Befehlszeile um?

1015
Andrew WC Brown

In Rails muss ich manchmal mehrere Verzeichnisse und Dateien umbenennen, zB:

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 

Ich habe nach Lösungen gesucht. Kennt jemand ein einfaches Befehlszeilenprogramm, das ich installieren kann? Eg mvall . person user.

1
Sehen Sie sich die verwandten Fragen in der rechten Spalte an. Auf diese Frage gibt es viele Antworten. alecail vor 12 Jahren 3

1 Antwort auf die Frage

1
Rusty Lemur

Ich bin sicher, es gibt bessere Wege, aber hier ist meine Implementierung.

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

Alle Tools befinden sich in bash, daher muss nichts installiert werden.

Sie können auch "find" verwenden, um Ihre Änderungen auszuführen (anstatt nur die Ziele zu lokalisieren). Es hängt wahrscheinlich davon ab, ob Sie mit "find" oder "bash" zufrieden sind. Dominic Cronin vor 12 Jahren 0
@Rusty: `for i in $ (find.…)` Schlägt fehl, wenn Dateinamen Leerzeichen enthalten. Und Sie müssen nicht "`. / `" Sagen. Scott vor 12 Jahren 0
@Dominic: Verhält sich `find` garantiert sicher, wenn Sie Verzeichnisse umbenennen, während sie den Verzeichnisbaum durchlaufen? Scott vor 12 Jahren 0
@Scott - gute Frage. Weiß nicht die Antwort Dominic Cronin vor 12 Jahren 0