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

Umbenennen vieler Dateien in Linux nach einem Muster

Ich habe diese nicht getestet, also habe ich echo eingefügt am Anfang der Befehle, damit Sie sie ausprobieren können, bevor Sie das Echo entfernen, um sie wirklich auszuführen.

  1. for f in *v9.zip; do echo mv "${f}" "${f%v9.zip}.zip"; done
    
  2. for f in *_*; do echo mv "${f}" "${f//_/-}"; done
    

Was Ihr drittes Problem betrifft, bin ich sicher, dass es auch gelöst werden kann, aber vielleicht hilft ein ausgefeilterer Ansatz als Einzeiler mit roher Schale, wie @tchrist erwähnt hat.


Da ist eine rename Befehl, der mit den meisten Debian/Ubuntu-basierten Distributionen bereitgestellt wird und von Robin Barker basierend auf Larry Walls Originalcode von etwa 1998(!) geschrieben wurde.

Hier ist ein Auszug aus der Dokumentation:

  "rename" renames the filenames supplied according to the rule specified as the first argument.  The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames
  specified.  If a given filename is not modified by the expression, it will not be renamed.  If no filenames are given on the command line, filenames will be read via standard input.

  For example, to rename all files matching "*.bak" to strip the extension, you might say

          rename 's/\.bak$//' *.bak

  To translate uppercase names to lower, you'd use

          rename 'y/A-Z/a-z/' *

Es verwendet Perl, sodass Sie Perl-Ausdrücke verwenden können, um das Muster abzugleichen. Tatsächlich glaube ich, dass es ähnlich wie die Skripte von tchrist funktioniert.

Ein weiteres wirklich nützliches Tool-Set zum Umbenennen von Massendateien ist die renameutils-Sammlung von Oskar Liljeblad. Der Quellcode wird von der Free Software Foundation gehostet. Zusätzlich haben viele Distributionen (insbesondere Debian/Ubuntu-basierte Distributionen) einen renameutils Paket mit diesen Tools.

Auf einer dieser Distributionen können Sie es installieren mit:

$ sudo apt-get install renameutils

Und dann, um Dateien umzubenennen, führen Sie einfach diesen Befehl aus:

$ qmv

Es öffnet sich ein Texteditor mit der Liste der Dateien, und Sie können sie mit der Such- und Ersetzungsfunktion Ihres Editors bearbeiten.


Meine Lieblingslösung ist mein eigenes Umbenennen Skript. Das einfachste Beispiel, das Ihre Probleme abbildet, sind diese:

% rename 's/_/-/g' *
% rename 's/(\p{Lower})(\p{Upper})/$1 $2/g' *

Obwohl ich Leerzeichen in meinen Dateinamen wirklich hasse, besonders vertikale Leerzeichen:

 % rename 's/\s//g' *
 % rename 's/\v//g' *

und so weiter. Es basiert auf einem Skript von The Larry Wall, wurde aber um Optionen erweitert, wie in:

usage: /home/tchrist/scripts/rename [-ifqI0vnml] [-F file] perlexpr [files]
    -i          ask about clobbering existent files
    -f          force clobbers without inquiring
    -q          quietly skip clobbers without inquiring
    -I          ask about all changes
    -0          read null-terminated filenames
    -v          verbosely says what its doing 
    -V          verbosely says what its doing but with newlines between old and new filenames
    -n          don't really do it
    -m          to always rename
    -l          to always symlink
    -F path     read filelist to change from magic path(s)

Wie Sie sehen, kann es nicht nur die Namen von Dateien ändern, sondern auch, wo symbolische Links auf dasselbe Muster verweisen. Sie müssen keinen s/// verwenden Muster, obwohl man das oft tut.

Die anderen Tools in diesem Verzeichnis sind hauptsächlich für Unicode-Arbeiten gedacht, von denen es einige sehr nützliche gibt.


Linux
  1. So benennen Sie Dateien unter Linux um

  2. Umbenennen von Dateien mit Erweiterungen in Kleinbuchstaben mit „Umbenennen“?

  3. Metamorphose 2 – Batch-Umbenennung Ihrer Dateien und Ordner unter Linux

  4. Finden Sie mehrere Dateien und benennen Sie sie in Linux um

  5. Linux Dateien in Großbuchstaben umbenennen

Umbenennungsbefehl in Linux (Mehrere Dateien umbenennen)

Rm-Befehl unter Linux

So benennen Sie Dateien über die Befehlszeile in Linux um

So benennen Sie eine Datei (en) in Linux um

8 Methoden zum gleichzeitigen Umbenennen mehrerer Dateien in Linux

Linux-Erweiterung zum Umbenennen mehrerer Dateien