Flexible Umbenennung im Terminal

599
ITA

Angenommen, ich habe einen Ordner mit einigen Dateien:

/Users/user101/Temp/rentest: ls fi_name1.txt fi_name2.txt fi_name3.txt 

Ich suche nach einer flexiblen Umbenennungsmethode. Zum Beispiel wenn ich:

/Users/user101/Temp/rentest: ls | vim - 

Ich komme in vim:

Flexible Umbenennung im Terminal

Wie leite ich das jetzt zurück zum Terminal? Und wie würde ich dies zusammen mit dem mvBefehl verwenden, um Dateien im Verzeichnis umzubenennen?

Ich weiß, dass es einen renameNutzen gibt, und die meisten Leute werden darauf reagieren, indem sie einfach eine Reihe von terminalBefehlen lernen, aber ich finde, dass dies viel interessanter / flexibler ist, um dies zu erreichen. Kennt jemand eine Methode oder hat dies vorher versucht?

BEARBEITEN : Es besteht die Tendenz, sich an stackexchangedie Einzelheiten einer Frage zu orientieren. Aber ich suche nicht nach Antworten, die besagen "oh, Sie haben die Dateien nacheinander gemacht, also verwenden Sie einfach mv" oder "oh, der Spaltenbearbeitungsmodus lässt Sie nur eine Art von Änderung an allen Dateien vornehmen".

Der Punkt hier ist: Ich möchte nicht jedes Mal bei Google nachschlagen, wenn ich einer Reihe von Dateien in einem Verzeichnis einen Pre-Fix, einen Post-Fix oder eine Art seltsamer In-Fix hinzufügen möchte. Und es können auch nicht alle Dateien sein.

/Users/ivanabraham/Temp/rentest: ls fi_name1.txt fi_name2.txt fi_name3.txt gi_name3.txt gi_name4.txt 

und

ls | grep 'fi*' | vim - 

zum Beispiel.

0
Wenn Sie jede Datei manuell umbenennen, wird sie nicht umbenannt und kann mit einfachen `mv`-Befehlen erreicht werden phuclv vor 5 Jahren 0
Das stimmt, aber ich hatte vor, etwas wie den [Spaltenbearbeitungsmodus] (https://content.pivotal.io/blog/column-edit-mode-in-vi) zu unternehmen, um es viel schneller zu machen (ich habe es gerade nicht getan es nicht in der GIF-Datei erfassen), und normalerweise werden 30 Dateien nicht 3 sein. ITA vor 5 Jahren 0
Der Spaltenbearbeitungsmodus ist für Namen wie "file1 _...", "file2 _...", ... "file10 _...", "file11 _..." unbrauchbar. Tatsächlich müssen Sie nur lernen, wie Sie Regex verwenden, und dann in allen Befehlen / Anwendungen, die Regex unterstützen, einschließlich "vi". Beachten Sie, dass das Ergebnis von [`ls` nicht in einen anderen Befehl geleitet werden soll] (https://unix.stackexchange.com/q/128985/444250). phuclv vor 5 Jahren 1
Das ist nicht die Art von Antwort, nach der ich suche. Es tut uns leid. ITA vor 5 Jahren 0
+1 für den Link, mein nächster Stopp wäre jedoch tatsächlich Python gewesen. ITA vor 5 Jahren 0
Mit Spaltenoperationen in Ihrem Texteditor oder mit einem einfachen Skript wie `for i in *; Echo "mv $ i $ i"; done> renaming.sh` können Sie leicht mit einer Textdatei (Shell-Skript) versehen, die `mv`-Befehle enthält. Sie können es nach Belieben bearbeiten und dann mit `sh renaming.sh` ausführen. egmont vor 5 Jahren 0

2 Antworten auf die Frage

1
ITA

vidir von moreutils scheint zu tun, was ich gesucht habe. Auf einem MacOS können Sie Folgendes tun:

brew install moreutils 

Sobald Sie sich Homebreweingerichtet haben.

Da jemand Erweiterungen / Apps dafür geschrieben hat, ist es unwahrscheinlich, dass er dies über die CLI tun kann. Wenn dies jedoch gelingt, wäre ich sehr interessiert, wie er dies tun kann.

0
Heptite

Es scheint, dass dieses Toolset nicht verwaltet wird, aber ich verwende es immer noch: https://www.nongnu.org/renameutils/

Speziell:

Mit dem Programm qmv ("Quick Move") können Dateinamen in einem Texteditor bearbeitet werden. Die Namen aller Dateien in einem Verzeichnis werden in eine Textdatei geschrieben, die vom Benutzer bearbeitet wird. Die Textdatei wird gelesen und analysiert, und die Änderungen werden auf die Dateien angewendet.

qmvkann in einer Reihe von Modi ausgeführt werden, aber ich bevorzuge es, es mit den Befehlszeilenoptionen zu verwenden, -fdodie das Ziel nur als eine Spalte im Editor auflisten.