mv
Es ist eine grundlegende Befehlszeile, die entwickelt wurde, um eine Sache zu erledigen und sie gut zu machen (Unix-Philosophie): Datei (en) oder Verzeichnis (e) verschieben .
Sie können STDOUT
& STDIN
¹ hacken , um die Zielzeichenfolge im laufenden Betrieb zu ändern, aber es ist einfach kein intelligenter Hack
umbenennen (Perls)
Es gibt andere Tools mit demselben Namen, die dies möglicherweise können oder nicht. Seien Sie also vorsichtig.
Wenn Leute darüber reden rename
, denken wir an diesen, nicht an den ELF
, der weniger mächtig ist (Magie?).
Es ist nicht einfach, es ist Perl. Sie können einige Perl-Funktionen im Inneren übergeben, und es ist extrem leistungsfähig.
Betrachten Sie dieses Beispiel:
Sie möchten eine Reihe von Dateien wie umbenennen
foobar_1.txt
foobar_2.txt
foobar_3.txt
Sie können den Ziffern sprintf()
wie folgt Nullen voranstellen (mit Regex, heh, es ist Perl: D):
rename 's/(\d+)/sprintf("%04d", $1)/e' foobar_*.txt
Jetzt hast du :
foobar_0001.txt
foobar_0002.txt
foobar_0003.txt
Nicht wirklich ein grundlegender Befehl, nicht wahr?
Das Umbenennen ist nicht wirklich zum Verschieben von Verzeichnissen gedacht, kann es aber:
$ mkdir -p /tmp/foo/bar/base
$ touch /tmp/foo/bar/base/file
$ rename 's!/tmp/foo/bar/base/file!/tmp/file!' /tmp/foo/bar/base/file
Die verschobene Datei
/tmp/file
¹ Code, den wir auf *.stackexchange.*
Websites sehen
for FILE in `ls *.txt`
do
mv ${FILE} `echo ${FILE} | sed 's/anything_ugly/anything_still_ugly/'`
done
Es ist nicht der richtige Weg , es ist einfach fehlerhaft, nur um zu erklären, warum das richtige Werkzeug im richtigen Moment verwendet wird
type -a rename
undrename --version
?