Sie können mcpaus dem mmvPaket
folgendermaßen verwenden:
mcp "*original*" "#1copy#2"
Dadurch wird jede Datei kopiert, die die Zeichenfolge "original" im aktuellen Verzeichnis enthält, und diese Zeichenfolge wird durch "copy" ersetzt. Sie können testen, was mcpdurch Hinzufügen des -nFlags geschehen soll. Es werden jedoch keine Dateien stillschweigend überschrieben, sondern Sie werden gefragt. Die Verwendung mmvhat den Vorteil, cpdass Sie sie nicht für jede einzelne Datei aufrufen müssen - bei tausend Dateien, wie Sie sie scheinbar kopieren, macht dies einen Unterschied.
Sie können GNU auchparallel
folgendermaßen verwenden ( --dry-runzum Testen entfernen Sie es, um das Kopieren durchzuführen):
parallel --dry-run cp -p "{}" "{=s/original/copy/=}" ::: *
oder, wenn dies den Fehler "Argumentliste zu lang" ergibt:
printf "%s\0" * | parallel --dry-run -0 cp -p "{}" "{=s/original/copy/=}"
Beispiellauf
$ ls -1
foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_original.in
foo_bar_abc_1_04_geh_original.in
$ mcp "*original*" "#1copy#2"
$ ls -1
foo_bar_abc_1_01_geh_copy.in
foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_copy.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_copy.in
foo_bar_abc_1_03_geh_original.in
foo_bar_abc_1_04_geh_copy.in
foo_bar_abc_1_04_geh_original.in
Lassen Sie es uns timeüber 1000 Dateien mit jeweils 100 KiB auf einem langsamen Computer ausführen :
$ time mcp "*original*" "#1copy#2"
real 0m1.114s
user 0m0.000s
sys 0m0.132s