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

Batch-Umbenennung von Dateien in der Befehlszeile und Xargs

Dies kann auch mit xargs erfolgen und sed um die Dateierweiterung zu ändern.

ls | grep \.png$ | sed 'p;s/\.png/\.jpg/' | xargs -n2 mv

Sie können den ursprünglichen Dateinamen zusammen mit dem gewünschten Dateinamen drucken. Lassen Sie dann xargs diese beiden Argumente im Bewegungsbefehl verwenden. Für den Einzeiler habe ich auch ein grep hinzugefügt, um alles herauszufiltern, was keine *.png-Datei ist.


Wie benenne ich die Datei um, sodass ich nur eine Erweiterung haben kann.

cd dir/with/messedup/files

for file in *.png.jpg; do
  mv "$file" "${file%.png.jpg}.jpg"
done

Wie ändere ich in Zukunft mit xargs die Erweiterung der Datei ähnlich dem zweiten Befehl?

Das geht meines Wissens nach nicht. Der beste Weg, dies zu tun, wäre die Verwendung einer for-Schleife mit Parameterersetzung ähnlich der obigen:

for file in *.png; do
  convert "$file" -resize "${file%.png}.jpg"
done

Wenn Sie Dateien in Unterverzeichnissen haben, die Sie konvertieren möchten, können Sie find leiten zu einem while read Schleife:

find . -type f -name '*.png' |
while read file; do
  convert "$file" -resize "${file%.png}.jpg"
done

HINWEIS: Es wird allgemein als schlechte Idee angesehen, die Ausgabe von ls zu verwenden in einem Shell-Skript. Während Ihr Beispiel möglicherweise gut funktioniert hat, gibt es viele Beispiele, bei denen dies nicht der Fall ist. Wenn Ihre Dateinamen beispielsweise Zeilenumbrüche enthalten (was Unix zulässt), ls werden denen wahrscheinlich nicht entkommen. (Das hängt tatsächlich von Ihrer Implementierung ab, was ein weiterer Grund ist, ls nicht zu verwenden in Skripten; sein Verhalten variiert stark von einer Box zur nächsten.) Sie erhalten konsistentere Ergebnisse, wenn Sie entweder find verwenden in einer While-Read-Schleife oder Dateiglobbing (z.B. *.png ) in einer for-Schleife.


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

  2. Kopieren und Einfügen in der Linux-Befehlszeile mit xclip

  3. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  4. So teilen und kombinieren Sie Dateien von der Befehlszeile in Linux

  5. So verstecken Sie Dateien und Ordner im Dateimanager ohne Umbenennung

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

Cp-Befehl in Linux (Dateien kopieren)

Stat-Befehl:Attribute von Dateien und Verzeichnissen anzeigen

Die größten Dateien und Ordner in der Linux-Befehlszeile finden

Linux-tar-Befehl zum Komprimieren und Extrahieren von Dateien

Umbenennen von Dateien und Ordnern in cPanel