Ich habe eine .bdf-Datei in Unterordnern. Alle .bdf haben den gleichen Namen: Loads.bdf
Beispiel:
/home/user/folderxx/folderxxx/Load.bdf
/home/user/folderxx/folderxxx/Load.bdf
Ich muss alle Load.bdf-Dateien finden (und in einen neuen Ordner kopieren) und sie mit ihrem Pfadnamen umbenennen.
Beispiel: Nach der beabsichtigten Operation sollte so etwas angezeigt werden.
folder001_folderAAA_Load.bdf
folder002_folderBBB_Load.bdf
mmv '*/*.m4a' '#1.m4a'
Mit
prename
(rename
auf vielen Systemen alias ) ist dies ohne mehrere Läufe vonmv
oder möglichcp
:Entfernen Sie das,
-n
wenn Sie sicher sind, dass dadurch die gewünschten Dateien verschoben werden.Aktualisieren
Um die Dateien zu kopieren, anstatt sie zu verschieben, kopieren Sie am schnellsten zuerst mit
cpio
oderpax
und benennen sie dann wie zuvor um. ZB (mit GNUcpio
):Beachten Sie, dass
pax
POSIX und LSBcpio
zwar nicht mehr POSIX sind,cpio
aber immer noch das Programm ist, das häufig auf vielen Systemen verwendet wird.Um Dateinamen mit Zeilenumbrüchen mit GNU
find
/ zu behandelncpio
, ist es möglich,-print0
zufind
und-0
zu hinzuzufügencpio
.Update 2
Die
pax
Lösung ist ein Einzeiler (ohne dencd
):Oder für einen beliebigen Dateinamen (und GNU
find
):quelle
prename
, aberrename
in Ubuntu standardmäßig aufgerufen ) und die andere , die keinen regulären Ausdruck verwendet (bekannt alsrename
Arch und Red Hat). Auch-execdir
ist bevorzugt-exec
(sieheman find
). Verschiebt dieser Befehl die Dateien nicht und kopiert sie nicht?prename
. Obwohl ich den 'Kopie'-Teil in der Frage verpasst habe.pax
Lösung aktualisiert , verfügt über eine eigene Such- / Ersetzungsoption.Wenn Sie dies auf einem System tun müssen, auf dem die in einigen anderen Antworten genannten Tools nicht vorhanden sind (z. B. mcp und mmv oder Vorname), und Sie dies vollständig in der Shell tun möchten, können Sie etwas tun mögen:
Dieses Skript findet alle
Load.bdf
imoldpath
Verzeichnis genannten Dateien , mischt die Verzeichnisnamen in einen neuen Dateinamen und kopiert sie in Ihr Zielverzeichnis. Wir können auch prüfen, ob bereits kopierte Dateien vorhanden sind, falls Sie diese mehrmals ausführen müssen, und wir müssen nicht alle Dateien erneut kopieren.Die resultierende Verzeichnisstruktur würde am Ende folgendermaßen aussehen:
quelle
In zsh ist es einfach mit
zmv
.quelle
Ich denke, das ist alles ein vollständig portables Shell-Skript - und es ist ziemlich einfach gemacht, obwohl ich zuerst meine Zweifel hatte.
quelle