Wie benennen Sie alle Dateien/Unterverzeichnisse im aktuellen Ordner um?
Nehmen wir an, ich habe viele Dateien und Unterverzeichnisse mit Leerzeichen und ich möchte alle Leerzeichen durch einen Unterstrich ersetzen.
File 1
File 2
File 3
Dir 1
Dir 3
sollte in
umbenannt werdenFile_1
File_2
File_3
Dir_1
Dir_3
Akzeptierte Antwort:
Wenn Sie auch Dateien in Unterverzeichnissen umbenennen müssen, und Ihre find
unterstützt das -execdir
Prädikat, dann können Sie tun
find /search/path -depth -name '* *'
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;
Vielen Dank an @glenn jackman für den Vorschlag von -depth
Option für find
und mich zum Nachdenken anregen.
Beachten Sie, dass auf einigen Systemen (einschließlich GNU/Linux-Systemen) find
kann Dateien nicht finden, deren Name Leerzeichen und auch Bytefolgen enthält, die keine gültigen Zeichen bilden (typisch bei Mediendateien mit Namen mit Nicht-ASCII-Zeichen, die in einem anderen Zeichensatz als dem der Ländereinstellung codiert sind). Setzen des Gebietsschemas auf C
(wie in LC_ALL=C find...
) würde das Problem lösen.