[英]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
错误。 请为上述任务使用rename
或mv
的任何示例?
尝试这样的事情:
#! /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.