Mit prename( renameauf vielen Systemen alias ) ist dies ohne mehrere Läufe von mvoder möglich cp:
cd /home/user
find . -type f -name 'Loads.bdf' -exec \
prename -n 's:^./::; s:/:_:g; s:^:destination/:' {} +
Entfernen Sie das, -nwenn 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 cpiooder paxund benennen sie dann wie zuvor um. ZB (mit GNU cpio):
cd /home/user
find . -type f -name 'Loads.bdf | cpio -p --make-directories destination
cd destination
find . -type f -name 'Loads.bdf' -exec prename -n 's:^./::; s:/:_:g' {} +
Beachten Sie, dass paxPOSIX und LSB cpiozwar nicht mehr POSIX sind, cpioaber immer noch das Programm ist, das häufig auf vielen Systemen verwendet wird.
Um Dateinamen mit Zeilenumbrüchen mit GNU find/ zu behandeln cpio, ist es möglich, -print0zu findund -0zu hinzuzufügen cpio.
Update 2
Die paxLösung ist ein Einzeiler (ohne den cd):
cd /home/user
find . -name 'Loads.bdf' | cut -d/ -f 2- | pax -rws ':/:_:g' destination
Oder für einen beliebigen Dateinamen (und GNU find):
find /home/user -name 'Loads.bdf' -printf '%P\0' | pax -0rws ':/:_:g' destination