Ich habe mehrere Dateien mit dem Namen " that : screenshot 13:25.png
Windows", die möglicherweise aufgrund des ":" Probleme beim Öffnen dieser Dateien haben.
Wie kann ich es ersetzen?
Ich habe mehrere Dateien mit dem Namen " that : screenshot 13:25.png
Windows", die möglicherweise aufgrund des ":" Probleme beim Öffnen dieser Dateien haben.
Wie kann ich es ersetzen?
Antworten:
In einem Terminal cd
in das richtige Verzeichnis und dann diesen ausführen.
rename 's/\:/-/g' *.png -vn
Dies zeigt eine Vorschau des Umbenennens an. Es sollte ersetzen :
mit -
.
Wenn das richtig aussieht, entfernen Sie das n
vom Ende und dann wird die eigentliche Umbenennung durchgeführt.
Hinweis : Ubuntu-Versionen über 17.04 werden nicht mit ausgeliefert rename
, sind jedoch in den Standard-Repositorys verfügbar. Verwenden sudo apt install rename
Sie diese Option, um sie abzurufen
n
) leicht entfernen können.
rename 's/\:/-/g; s/%28/ /g; s/%29//g' ...
Hier ist eine reine Bash-Lösung:
for i in *:*; do
mv "$i" "${i//:/_}"
done
Das ${var//pattern/replacement}
Format ersetzt alle Vorkommen von pattern
mit replacement
in der Variablen $var
. Weitere Informationen zur String-Manipulation von bash finden Sie hier .
Wenn Sie dies für mehrere Zeichen tun möchten, können Sie sie einfach in eine Zeichenklasse einfügen. So zum Beispiel, zu ersetzen , alle ;
, :
, =
, +
, %
, ,
mit Unterstrichen, könnten Sie tun:
$ ls
1foo:bar 2foo:bar:baz 3foo;bar 4foo=bar 5foo%bar 6foo,bar 7foo+bar
$ for i in *; do mv "$i" "${i//[:;=%,+]/_}"; done
$ ls
1foo_bar 2foo_bar_baz 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar
Grundsätzlich ist die Idee das [ ]
heißt any of the characters listed
. Wenn Sie also alle Zeichen, die Sie ersetzen möchten, in die Zeichenklasse einfügen, werden alle Zeichen gleichzeitig behandelt.
Für die spezifischen Zeichen , die Sie gefragt, sind die Dinge ein wenig komplexer , da einige von ihnen werden müssen entkommen (ich ignorierte die /
da * nix erlaubt es in Dateinamen nicht mehr als Windows tut , so dass nicht ein sein wird Problem):
$ ls
1foo<bar 2foo>bar 3foo:bar 4foo\bar 5foo|bar 6foo*bar 7foo?bar 8foo"bar 9foo'bar
$ for i in *; do mv "$i" "${i//[<>:\\|*\'\"?]/_}"; done
$ ls
1foo_bar 2foo_bar 3foo_bar 4foo_bar 5foo_bar 6foo_bar 7foo_bar 8foo_bar 9foo_bar
Beachten Sie, dass ich dem entkommen bin \
, '
und "
indem ich \
vor jedem einen Buchstaben hinzufüge .
Wenn Sie eine GUI bevorzugen, installieren Sie Pyrenamer:
sudo apt-get install pyrenamer
Dann führe es aus:
pyrenamer
Es gibt Dutzende Optionen für Muster und das Umbenennen von Formaten.
Ich bevorzuge GUI aber als Nautilus Extension, also Nautilus Actions Extra :
sudo add-apt-repository ppa:nae-team/ppa
sudo apt-get update
sudo apt-get install nautilus-actions-extra
nautilus -q
(Siehe www.webupd8.org/2011/12/nautilus-actions-extra-pack-of-useful.html )
Wenn Sie dann die umzubenennenden Dateien auswählen und im Kontextmenü auf Umbenennen klicken, stehen Ihnen viele Optionen zum Umbenennen von Dateien zur Verfügung.
Das renameutils
Paket enthält ein praktisches Programm, qmv
das interaktive Batch-Umbenennungen ermöglicht. Sie führen es in einem Verzeichnis oder einer Liste von Dateien aus, und es generiert eine temporäre Textdatei mit ihren Dateinamen und startet Ihren bevorzugten Editor. Wenn Sie den Editor verlassen, werden alle von Ihnen geänderten Dateinamen entsprechend umbenannt. qmv
Verwandelt ein Batch-Umbenennungsproblem in ein Textbearbeitungsproblem.
In diesem Fall können Sie qmv -f do *:*
die Namen aller Dateien bearbeiten, die einen Doppelpunkt enthalten, und dann den :%s/:/_/g
Befehl in Vim (oder ein entsprechendes Suchen und Ersetzen in dem von Ihnen verwendeten Editor).
Die -f do
Option legt fest, dass das Format der Textdatei nur den Namen der Zieldatei enthält, wodurch das Suchen und Ersetzen einfacher wird. Das Standardformat enthält zwei Kopien des Dateinamens in jeder Zeile, und Sie bearbeiten nur die zweite. Dies ermöglicht es, das Richtige zu tun, wenn Sie Zeilen in der Datei gelöscht oder neu angeordnet haben, dies ist jedoch nicht immer die einfachste. Es gibt auch andere Formate.
Mit qmv
können Sie stattdessen die generierte Datei über einen Befehl Ihrer Wahl weiterleiten, z. B. sed
wenn Sie die interaktive Funktion nicht möchten.
Und hier ist ein Nautilus - Skript , dass ersetzt (alle?) Windows-inkompatiblen Zeichen mit einem Bindestrich in allen Dateinamen ausgewählt (basierend auf der Antwort von terdon ;-)
#!/bin/bash
filesall=""
while [ $# -gt 0 ]
do
files=`echo "$1" | sed 's/ /\?/g'`
filesall="$files $filesall"
shift
done
for i in $filesall; do mv "$i" "${i//[<>:\\|*\'\"?]/-}"; done
Thunar (der XFCE-Dateimanager) hat eine nette eingebaute Funktion zum Umbenennen von Dateien in großen Mengen. Es bietet Optionen zum Entfernen / Ersetzen von Zeichen, Suchen und Ersetzen, Nummerieren von Dateien und mehr.
Installieren Sie thunar:
sudo apt-get install thunar
Öffne thunar, navigiere zu deinen Dateien, wähle sie aus und wähle "Umbenennen" (über das Kontextmenü oder F2)
@echo off
echo.
echo. How many Characters Do You Want To Remove
echo.
echo. From The End Of The FileName ?
echo.
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.mp3') do (
set oldName=%%a
Set newName=!oldName:~0,-%variable%!.mp3
Ren "!oldName!" "!newName!"
)
exit