繁体   English   中英

使用 shell 脚本重命名多个文件

[英]Renaming multiple files using shell script

我已经将多个文件从不同的 s3 存储桶下载到 linux 虚拟机上的一个文件夹中。 我只想重命名目录中的*.gz文件,最好按顺序使用脚本重命名为FILE001_$(date '+%Y%m%d').csv.gz , FILE002_$(date '+%Y%m%d').csv.gz等,然后将它们移动到客户端的 sftp 服务器(现有进程)。

我尝试使用find. -name "*.csv.gz" -exec mv {} FILE%03d_$(date '+%Y%m%d').csv.gz find. -name "*.csv.gz" -exec mv {} FILE%03d_$(date '+%Y%m%d').csv.gz来自另一篇文章,但missing argument to -exec错误。 请为上述任务使用renamemv的任何示例?

尝试这样的事情:

#! /bin/bash
declare -i i=0
for f in *.csv.gz; do
  : $((i++))
  mv "$f" "$(printf "FILE%03d_%s.csv.gz" $i "$(date +%Y%m%d)")"
done

您可以将文件名传递到脚本中。 在这种情况下,您必须使用dirname来获取每个文件的目录名称。

#! /bin/bash
declare -i i=0
for f in "$@"; do
  : $((i++))
  mv "$f" "$(dirname "$f")"/"$(printf "FILE%03d_%s.csv.gz" $i "$(date +%Y%m%d)")"
done

例子:

$ mkdir {1,2,3}
$ touch {1,2,3}/{a,b,c}.csv.gz
$ ./rename.sh {1,2,3}/*.csv.gz
$ ls {1,2,3}
1:
FILE001_20211012.csv.gz  FILE002_20211012.csv.gz  FILE003_20211012.csv.gz

2:
FILE004_20211012.csv.gz  FILE005_20211012.csv.gz  FILE006_20211012.csv.gz

3:
FILE007_20211012.csv.gz  FILE008_20211012.csv.gz  FILE009_20211012.csv.gz

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM