我有一个要求,我需要每周将一些文件名重命名为固定文件名。
为了更好地解释,我每周都会收到以下格式的3个文件:
File_ABC_20160822.TXT.pgp
File_DEF_20160822.TXT.pgp
File_GHI_20160822.TXT.pgp
我需要运行一个小脚本将文件重命名为:
File_ABC.dat
File_DEF.dat
File_GHI.dat
不删除原始文件,因为我们必须保存已传送文件的日志。
问题在于,由于文件每周都附带一个新的日期后缀,因此脚本必须以YYYYMMDD格式选择当前系统日期。
答案 0 :(得分:1)
您可以循环使用bash
参数扩展文件名来重命名时获取所需的名称:
for f in File_*_*.TXT.pgp; do echo cp -i "$f" "${f%_*}.dat"; done
以上将执行Dry-run,为了实际操作,请删除echo
:
for f in File_*_*.TXT.pgp; do cp -i "$f" "${f%_*}.dat"; done