Sie können mcp
aus dem mmv
Paket 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 mcp
durch Hinzufügen des -n
Flags geschehen soll. Es werden jedoch keine Dateien stillschweigend überschrieben, sondern Sie werden gefragt. Die Verwendung mmv
hat den Vorteil, cp
dass 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-run
zum 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