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

时间:2018-07-28 11:56:12

标签: shell

我只想将if: pass else: pass 个文件从try except复制到20180721文件夹中。我还想从文件名中删除第一个数字,并想将从-1重命名为-3 。我想尽量减少命令,因此我在下面使用Outgoing命令。

文件名:

Incoming

预期输出:

pax

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

使用的命令:

216118105741_MOM-09330-20180721_102408-1.jar

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

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