Versuchen Sie:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
Wenn Sie Bash verwenden, können Sie globstar
einschalten Shell-Option, um Dateien und Verzeichnisse rekursiv abzugleichen:
shopt -s globstar
cp src/**/*.so dst
Wenn Sie Dateien finden müssen, deren Namen mit .
beginnen , und/oder Dateien in und unter Verzeichnissen, deren Namen mit .
beginnen , setzen Sie den dotglob
Option auch (z.B. mit shopt -s dotglob
). Sie können beide in einem Befehl festlegen:
shopt -s globstar dotglob
Ich habe den von Mike vorgeschlagenen Befehl ausprobiert:
find src/ -type f | grep -i so$ | xargs -i cp {} dst
aber es endete damit, dass alle Dateien in das Verzeichnis dst
verschoben wurden mit ihren relativen Pfaden verloren.
Um die relativen Pfade beizubehalten, muss der Befehl wie folgt geändert werden:
find src/ -type f | grep -i so$ | xargs -i cp {} dst/{}