GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie ersetzt man ein Zeichen durch ein anderes in allen Dateinamen der aktuellen Verzeichnisse?

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 werden
File_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.


Linux
  1. So ersetzen Sie alle Vorkommen eines Wortes in allen Dateien in der Linux-Befehlszeile

  2. Wie finde ich alle Dateien/Ordner mit 777-Berechtigung in Linux?

  3. So finden Sie alle Sparse-Dateien in Linux

  4. Wie finde ich alle Dateien mit der Endung .rb unter Linux?

  5. Wie finde ich die größten Verzeichnisse oder größten Dateien?

So finden Sie Dateien in Linux mit dem Find-Befehl

So finden Sie Dateien mit dem fd-Befehl in Linux

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

So finden Sie Dateien mit Dutzenden von Kriterien mit dem Bash-Suchbefehl

Verzeichnisse mit allen Dateien finden, die älter als X sind?

Wie finde ich die platzraubendsten Verzeichnisse oder Dateien heraus?