移动具有不同文件名的文件

时间:2014-01-26 15:50:19

标签: shell cp mv

我有相同的外观,但完全不同的4个文件。

> _palus_SLA_response_pages_main_2c3cd_2_18.tokudb
> _palus_SLA_response_pages_status_2c3cd_1_18.tokudb
> _palus_SLA_response_pages_main_51fdda_2_18.tokudb
> _palus_SLA_response_pages_status_51fdda_1_18.tokudb

我需要将具有代码“ 51fdda ”的所有文件替换为另一个“ 2c3cd ”。 因此,新代码将使用旧代码覆盖文件,并且只剩下2个文件:

_palus_SLA_response_pages_main_2c3cd_2_18.tokudb
_palus_SLA_response_pages_status_2c3cd_1_18.tokudb

我可以一次移动一个文件,就像这样......

mv "_palus_SLA_response_pages_main_51fdda_2_18.tokudb" "_palus_SLA_response_pages_main_2c3cd_2_18.tokudb" 
mv "_palus_SLA_response_pages_status_51fdda_1_18.tokudb" "_palus_SLA_response_pages_status_2c3cd_1_18.tokudb" 

但是手动一次移动的文件太多了。我需要一个可以为我做这个的脚本。

1 个答案:

答案 0 :(得分:2)

如果您有rename命令,则可以使用:

rename 51fdda 2c3cd *tokudb

如果您没有可用的重命名命令,可以通过一个简单的循环执行此操作:

for file in *51fdda*.tokudb; do
    mv ${file} ${file/51fdda/2c3cd}
done

有关此第二个解决方案的更多信息,请参阅bash(1)手册页的“Brace扩展”部分。