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

Finden Sie unter Linux Dateien mit illegalen Windows-Zeichen im Namen

Dieser Find-Einzeiler sollte für Sie funktionieren:

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y="$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x")" && mv "$x" "$y" ' \;

Keine der obigen Antworten findet Dateien oder Verzeichnisse, die entweder mit Leerzeichen (' ') oder Punkt/Punkt ('.') enden, die auch mit der Win32-API nicht sichtbar sind.

Zu .e.g. @falsetrus Antwort hinzufügen, könnte man tun

find . -name '*[<>:/\\|?*]*' -o -name '*[ \.]'

Mit fnmatch-Muster können Sie diese Zeichen in [] angeben wie folgt:

find . -name '*[<>:/\\|?*]*'

Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. Finden Sie die größten Dateien und Verzeichnisse in Linux

  3. Verwenden des Linux-Suchbefehls – Verwendung mit Beispielen

  4. So finden Sie Dateien mit dem fd-Befehl in Linux

  5. So löschen Sie eine Datei mit diesem Namen unter Linux:-]???????q

So finden Sie Dateien in Linux mit dem Find-Befehl

Linux-Suchbefehl mit praktischen Beispielen

So finden Sie Dateien über die Befehlszeile im Linux-Terminal

So finden Sie Dateien mit dem fd-Befehl in Linux

Tutorial für Linux-Suchbefehle (mit Beispielen)

Verwenden des tr-Befehls in Linux, um mit Charakteren zu spielen