Bạn có thể sử dụng mcptừ mmvgó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ì mcpsẽ làm bằng cách thêm -ncờ, 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 mmvcó lợi thế hơn cplà 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 để timenó, 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