Wenn Ihre Dateinamen kein Leerzeichen enthalten und Sie keine Unterverzeichnisse haben, können Sie eine einfache forSchleife verwenden:
$ for FILENAME in *; do mv $FILENAME Unix_$FILENAME; done
Verwenden Sie andernfalls den praktischen renameBefehl (ein Perl-Skript) - obwohl er möglicherweise nicht unter jedem Unix sofort verfügbar ist (z. B. wird OS X nicht mitgeliefert rename).
Ein kurzer Überblick unter debian-administration.org:
@Matteo: Danke an den Hinweis: Aktualisierte meine Antwort mit einer Warnung plus zwei Beispielen mit find.
Miku
Würde auch empfehlen for f in *; do [[ -f ${f} ]] && mv ...; done, nur Dateien
abzufangen
1
Wenn Sie Variablen wie angegeben zitieren, for FILENAME in *; do mv "$FILENAME" "Unix_$FILENAME"; donefunktioniert dies unabhängig davon, welche Zeichen in den Dateinamen enthalten sind. Es werden auch Verzeichnisse, Sockets, Symlinks und andere Dateitypen verschoben. Ich nehme an, das spielt keine Rolle.
Jonathan Leffler
75
Versuchen Sie den renameBefehl im Ordner mit den Dateien :
rename 's/^/Unix_/' *
Das Argument der Umbenennung ( Befehl sed s ) gibt an, dass der reguläre Ausdruck ^ durch Unix_ ersetzt werden soll . Das Caret (^) ist ein Sonderzeichen, das den Zeilenanfang bedeutet .
@ Matto 's/^/.../'ist das Perl-Ausdrucksargument für den Umbenennungsbefehl
RoyalleBlue
das ist fantastisch! Ich würde vorschlagen, Ordner / * hinzuzufügen, weil * ein bisschen gefährlich ist, wenn der Befehl versehentlich an einer anderen Stelle wiederholt wird
Systems Rebooter
Brew Install Umbenennen @OliverPearmain
Felipe Plazas
Beispiel zum Ersetzen eines Präfixes:rename 's/^start_/run_' *
Achten Sie darauf, dass Sie die Ausgabe von nicht verarbeiten ls. Dies kann zu Problemen führen, wenn die Dateinamen Leerzeichen oder andere merkwürdige Zeichen enthalten.
Jonathan Leffler
15
Ich war kürzlich mit der gleichen Situation konfrontiert und fand eine einfachere eingebaute Lösung. Ich teile es hier, damit es anderen Menschen helfen kann, nach einer Lösung zu suchen.
Mit OS X Yosemite hat Apple die Batch-Umbenennungsfunktionen direkt in Finder integriert. Details finden Sie hier . Ich habe auch die folgenden Schritte kopiert,
Benennen Sie mehrere Elemente um
Wählen Sie die Elemente aus und klicken Sie bei gedrückter Ctrl-Taste auf eines davon.
Wählen Sie im Kontextmenü die Option Elemente umbenennen.
Wählen Sie im Popup-Menü unter Ordnerelemente umbenennen, ob Sie Text in den Namen ersetzen, den Namen Text hinzufügen oder das Namensformat ändern möchten.
Text ersetzen: Geben Sie den zu entfernenden Text in das Feld Suchen ein und geben Sie den Text, den Sie hinzufügen möchten, in das Feld Ersetzen durch ein.
Text hinzufügen: Geben Sie den Text, den Sie hinzufügen möchten, in das Feld ein und fügen Sie den Text vor oder nach dem aktuellen Namen hinzu.
Format: Wählen Sie ein Namensformat für die Dateien und setzen Sie dann den Index, den Zähler oder das Datum vor oder nach dem Namen. Geben Sie einen Namen in das Feld Benutzerdefiniertes Format ein und geben Sie dann die Nummer ein, mit der Sie beginnen möchten.
Klicken Sie auf Umbenennen.
Wenn Ihre Dateien ein gemeinsames Muster haben, können Sie Text ersetzen verwenden, andernfalls würde auch das Hinzufügen von Text die Aufgabe übernehmen.
Antworten:
Wenn Ihre Dateinamen kein Leerzeichen enthalten und Sie keine Unterverzeichnisse haben, können Sie eine einfache
for
Schleife verwenden:Verwenden Sie andernfalls den praktischen
rename
Befehl (ein Perl-Skript) - obwohl er möglicherweise nicht unter jedem Unix sofort verfügbar ist (z. B. wird OS X nicht mitgeliefertrename
).Ein kurzer Überblick unter debian-administration.org:
Wenn Ihre Dateinamen Leerzeichen enthalten, ist die Verwendung
find
unter Linux einfacher : Folgendes sollte funktionieren:Auf BSD-Systemen gibt es
-printf
leider keine Option. Aber GNU findutils sollte (zB auf Mac OS X mit installierbar seinbrew install findutils
).quelle
find
.for f in *; do [[ -f ${f} ]] && mv ...; done
, nur Dateienfor FILENAME in *; do mv "$FILENAME" "Unix_$FILENAME"; done
funktioniert dies unabhängig davon, welche Zeichen in den Dateinamen enthalten sind. Es werden auch Verzeichnisse, Sockets, Symlinks und andere Dateitypen verschoben. Ich nehme an, das spielt keine Rolle.Versuchen Sie den
rename
Befehl im Ordner mit den Dateien :Das Argument der Umbenennung ( Befehl sed s ) gibt an, dass der reguläre Ausdruck ^ durch Unix_ ersetzt werden soll . Das Caret (^) ist ein Sonderzeichen, das den Zeilenanfang bedeutet .
quelle
's/^/.../'
bedeutet?'s/^/.../'
ist das Perl-Ausdrucksargument für den Umbenennungsbefehlrename 's/^start_/run_' *
Ich denke, das ist genau das, wonach Sie suchen:
Ja, es ist einfach, aber elegant und kraftvoll und auch einzeilig. Eine ausführlichere Einführung erhalten Sie von mir auf der Seite: Dateien und Verzeichnisse umbenennen (Präfix hinzufügen)
quelle
ls
. Dies kann zu Problemen führen, wenn die Dateinamen Leerzeichen oder andere merkwürdige Zeichen enthalten.Ich war kürzlich mit der gleichen Situation konfrontiert und fand eine einfachere eingebaute Lösung. Ich teile es hier, damit es anderen Menschen helfen kann, nach einer Lösung zu suchen.
Mit OS X Yosemite hat Apple die Batch-Umbenennungsfunktionen direkt in Finder integriert. Details finden Sie hier . Ich habe auch die folgenden Schritte kopiert,
Benennen Sie mehrere Elemente um
Wählen Sie die Elemente aus und klicken Sie bei gedrückter Ctrl-Taste auf eines davon.
Wählen Sie im Kontextmenü die Option Elemente umbenennen.
Wählen Sie im Popup-Menü unter Ordnerelemente umbenennen, ob Sie Text in den Namen ersetzen, den Namen Text hinzufügen oder das Namensformat ändern möchten.
Text ersetzen: Geben Sie den zu entfernenden Text in das Feld Suchen ein und geben Sie den Text, den Sie hinzufügen möchten, in das Feld Ersetzen durch ein.
Text hinzufügen: Geben Sie den Text, den Sie hinzufügen möchten, in das Feld ein und fügen Sie den Text vor oder nach dem aktuellen Namen hinzu.
Format: Wählen Sie ein Namensformat für die Dateien und setzen Sie dann den Index, den Zähler oder das Datum vor oder nach dem Namen. Geben Sie einen Namen in das Feld Benutzerdefiniertes Format ein und geben Sie dann die Nummer ein, mit der Sie beginnen möchten.
Klicken Sie auf Umbenennen.
Wenn Ihre Dateien ein gemeinsames Muster haben, können Sie Text ersetzen verwenden, andernfalls würde auch das Hinzufügen von Text die Aufgabe übernehmen.
quelle
Sie können einfach
-i
anstelle von verwenden-I {}
Das funktioniert auch perfekt.
ls
- listet alle Dateien im Verzeichnis aufxargs
- akzeptiert aufgrund der-i
Option alle Dateien zeilenweise{}
ist der Platzhalter für alle Dateien, der erforderlich ist, wennxargs
mehr als zwei Argumente als Eingabe abgerufen werdenMit awk:
quelle
-i
ist veraltet, jetzt ist nur-I
Funktioniert auch für Elemente mit Leerzeichen und ignoriert Verzeichnisse
quelle
Mit rnm (Sie müssen es installieren):
Oder
PS: Ich bin der Autor dieses Tools.
quelle
rename
funktioniert das bei mir nicht,rnm
tut es aber .Lage:
Wir haben
certificate.key
certificate.crt
drinnen/user/ssl/
Wir wollen etwas umbenennen , die mit beginnt
certificate
zucertificate_OLD
Wir befinden uns jetzt im Inneren
/user
Zuerst machst du einen Trockenlauf mit
-n
:rename -n "s/certificate/certificate_old/" ./ssl/*
Welches kehrt zurück:
rename(./ssl/certificate.crt, ./ssl/certificate_OLD.crt) rename(./ssl/certificate.key, ./ssl/certificate_OLD.key)
Ihre Dateien bleiben unverändert. Dies ist nur ein Testlauf.
Lösung:
Wenn Sie mit dem Ergebnis des Tests zufrieden sind, führen Sie es wirklich aus:
rename "s/certificate/certificate_OLD/" ./ssl/*
Was es bedeutet:
`benenne" s / SOMETHING / SOMETING_ELSE "PATH / FILES um
Trinkgeld:
Wenn Sie bereits auf dem Pfad sind, führen Sie es folgendermaßen aus:
rename "s/certificate/certificate_OLD/" *
Oder wenn Sie dies in einem Unterverzeichnis tun möchten, das mit
ss
do beginnt :rename -n "s/certificat/certificate_old/" ./ss*/*
Sie können auch tun:
rename -n "s/certi*/certificate_old/" ./ss*/*
Womit alles umbenannt wird, was
certi
in einem Unterverzeichnis beginnt, das mit beginntss
.Der Himmel ist die Grenze.
Spielen Sie mit Regex herum und testen Sie dies IMMER VORHER mit
-n
.Achten Sie darauf, dass die Namen der Ordner sogar umbenannt werden. Besser
cd
ins Verzeichnis und mach es dort. VERWENDUNG AUF EIGENE GEFAHR.quelle