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

问题描述 投票:1回答:2

我想只将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/
shell
2个回答
0
投票

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

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

0
投票

你可以试试这个

一般来说

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;
© www.soinside.com 2019 - 2024. All rights reserved.