Bạn có thể sử dụng mcp
từ mmv
gói theo cách sau:
mcp "*original*" "#1copy#2"
Điều này sẽ sao chép mọi tập tin có chứa chuỗi gốc bản gốc trong thư mục hiện tại và thay thế chuỗi này bằng bản sao chép bản sao. Bạn có thể kiểm tra những gì mcp
sẽ làm bằng cách thêm -n
cờ, tuy nhiên nó sẽ không âm thầm ghi đè lên các tệp, nhưng hỏi bạn. Việc sử dụng mmv
có lợi thế hơn cp
là bạn không phải gọi nó cho mỗi tệp duy nhất - với một nghìn tệp như bạn dường như sao chép, điều đó tạo ra sự khác biệt.
Bạn cũng có thể sử dụng GNUparallel
theo cách sau ( --dry-run
để kiểm tra, xóa nó để thực hiện sao chép):
parallel --dry-run cp -p "{}" "{=s/original/copy/=}" ::: *
hoặc, nếu điều đó làm cho danh sách đối số trên danh sách lỗi quá dài:
printf "%s\0" * | parallel --dry-run -0 cp -p "{}" "{=s/original/copy/=}"
Chạy ví dụ
$ 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
Hãy để time
nó, chạy hơn 1000 tệp 100 KiB trên mỗi máy chậm :
$ time mcp "*original*" "#1copy#2"
real 0m1.114s
user 0m0.000s
sys 0m0.132s