Wie würde ich alle Dateien in einem Sicherungsverzeichnis in das Benutzerverzeichnis kopieren (Archivierungsstil, bei dem das Datum nicht geändert wird), während ich jede Datei umbenenne, um den zufälligen Zeichenfolgenteil aus dem Namen zu entfernen (dh -2b0fd460_1426b77b1ee_-7b8e)?
cp von:
/backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf
zu:
/home/user/data/Erp.2014.02.16_16.57.03.etf
Jede Datei beginnt immer mit "Erp". gefolgt von der Datum-Uhrzeit-Zeichenfolge, gefolgt von der Zufallszeichenfolge und der Erweiterung ".etf". Ich möchte alle Namenselemente einschließlich des Datums- und Zeitstempels behalten. Ich möchte nur die zufällige Zeichenfolge entfernen.
Die zufällige Zeichenfolge ermöglicht mehrere Sicherungen derselben Datei. In diesem Fall habe ich jedoch nur fdupes ausgeführt und es gibt keine Duplikate. So kann ich einfach alle Dateien wiederherstellen und die zufällige Zeichenfolge entfernen.
Ich suche einen einzeiligen Bash-Befehl, um das zu tun.
Wenn das nicht funktioniert, könnte ich es in zwei oder mehr Schritten tun. Normalerweise benutze ich KRename, aber in diesem Fall muss ich es in bash machen. (Ich arbeite aus der Ferne.)
pax
. Dies scheint ein sehr nützliches Werkzeug zu sein. Ich frage mich, warum es in mehr Distributionen nicht Standard ist ...pax
gibt es seit 2005 in der Linux Standard Base. Außerdem ist GNUcpio
, die Alternative dazu, möglicherweise das am wenigsten nützliche GNU-Tool, das es gibt.rename
Fedora / Red Hat ist das anders: Ich weiß nicht, wie ich es in diesem Fall verwenden soll.Sie können den
cp
Befehl mit der-a
Option verwendenVerwenden Sie dann eine for-Schleife, um alle Dateien beim Kopieren umzubenennen:
Bereit. Starten Sie diesen Befehl im Quellverzeichnis.
Erläuterung: Das
%%-*
wird abgeschnitten alle Zeichen nach dem ersten Auftreten von einem Bindestrich / Minus-
und die.etf
am Ende fügt wieder die Dateierweiterung.Nun, und als One-Liner setzen Sie alles in eine Zeile. :-) So was
quelle
%%-*
Tipp zitieren ? Ich bin neugierig.Verwenden Sie in zsh
zmv
. Fügen Sie dies in Ihre.zshrc
:Dann benutze
In der Bash:
Wenn Sie kein zsh haben, eine POSIX-Methode pax (dies kopiert Verzeichnisse rekursiv).
Wenn Sie sich auf einem eingeschränkten System ohne zsh und ohne pax befinden, können Sie eine Schleife verwenden:
quelle
cp
hat diese Fähigkeit nicht. Ich erinnerecpio
mich, dass ich das kann, aber die aktuelle Manpage sagt etwas anderes aus. (Gnu)tar
hat jedoch eine--transform
Option:Sie hätten also eine cmdline wie:
quelle