Sen kullanabilirsiniz mcp
gelen mmv
pakette şu şekilde:
mcp "*original*" "#1copy#2"
Bu, geçerli dizine “orijinal” dizesini içeren her dosyayı kopyalar ve bu dizeyi “kopya” ile değiştirir. Bayrağı mcp
ekleyerek ne yapacağınızı test edebilirsiniz -n
, ancak dosyaların üzerine sessizce yazmaz, ancak size sorar. Kullanmanın mmv
avantajı cp
, her bir dosya için çağırmanıza gerek kalmamasıdır - kopyaladığınız gibi bin dosya ile fark yaratır.
GNU'yuparallel
aşağıdaki şekilde de kullanabilirsiniz ( --dry-run
test içindir, kopyalamayı gerçekleştirmek için kaldırın):
parallel --dry-run cp -p "{}" "{=s/original/copy/=}" ::: *
veya "Argüman listesi çok uzun" hatası veriyorsa:
printf "%s\0" * | parallel --dry-run -0 cp -p "{}" "{=s/original/copy/=}"
Örnek çalışma
$ 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
Let var time
bir 100 KiB her 1000 dosyaları üzerinde çalışacak, bunu yavaş makinede:
$ time mcp "*original*" "#1copy#2"
real 0m1.114s
user 0m0.000s
sys 0m0.132s