您可以通过以下方式mcp
从mmv
包中使用:
mcp "*original*" "#1copy#2"
这将在当前目录中复制每个包含字符串“ original”的文件,并将该字符串替换为“ copy”。您可以mcp
通过添加-n
标志来测试将执行的操作,但是该标志不会静默地覆盖文件,而是会询问您。使用mmv
具有优点,cp
因为您不必为每个文件都调用它-好像您要复制一千个文件,这有所作为。
您还可以通过以下方式使用GNUparallel
(--dry-run
用于测试,请将其删除以执行复制):
parallel --dry-run cp -p "{}" "{=s/original/copy/=}" ::: *
或者,如果这样给出“参数列表过长”错误:
printf "%s\0" * | parallel --dry-run -0 cp -p "{}" "{=s/original/copy/=}"
运行示例
$ 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
让我们time
在慢速的计算机上运行1000个文件,每个文件100 KiB :
$ time mcp "*original*" "#1copy#2"
real 0m1.114s
user 0m0.000s
sys 0m0.132s