如何使用shell复制和重命名多个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用shell复制和重命名多个文件相关的知识,希望对你有一定的参考价值。

我想只将20180721文件从Outgoing复制到Incoming文件夹。我还想从文件名中删除第一个数字,并希望从-1重命名为-3。我想将命令保持在最低限度,所以我在下面使用pax命令。

文件名:

216118105741_MOM-09330-20180721_102408-1.jar

预期产量:

MOM-09330-20180721_102408-3.jar

我已经尝试过这个命令,除了删除文件名前面的数字之外,它还完成了大部分工作。有人可以帮忙吗?

使用的命令:

pax -rw -pe -s/-1/-3/ ./*20180721*.jar ../Incoming/
答案

使用parameter expansion尝试这个简单的脚本:

for file in *20180721*.jar; do
    new=${file#*_}
    cp -- "$file" "/path/to/destination/${new%-*}-3.jar"
done
另一答案

你可以试试这个

一般来说

for i in `ls files-to-copy-*`; do 
   cp $i `echo $i | sed "s/rename-from/rename-to/g"`; 
done;

在你的情况下

for i in `ls *_MOM*`; do 
   cp $i `echo $i | sed "s/_MOM/MOM/g" | sed "s/-1/-3/g"`; 
done;

以上是关于如何使用shell复制和重命名多个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CopyWebpackPlugin 复制和重命名文件

在 bash 中使用正则表达式复制和重命名多个文件

如何使用环境变量复制和重命名文件?

使用 Bat 文件复制和重命名

使用Python复制和重命名excel文件[重复]

如何根据子文件夹复制文件和重命名