通过删除最后几个字符来重命名数百个文件

通过删除最后几个字符来重命名数百个文件

我有数百个文件,我想从文件名中删除最后 7 个字符,但保留其扩展名。

旧名称:

abc_xyz12_4567.txt

abcde_xyz12_4567.txt

新名字:

abc_xyz.txt

abcde_xyz.txt

答案1

尝试

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}' | ksh

您可以使用

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}'

进行预览。

答案2

您可以使用改名(或者prename在某些操作系统中):

rename 's/.{7}(\.txt)/$1/' abc*

答案3

与 GNU tar

touch abc_xyz12_4567.txt abcde_xyz12_4567.txt
tar --remove-files --xform='s/\(.*\).\{7\}\./\1./' -c ./* | tar -x
ls

输出

abcde_xyz.txt  abc_xyz.txt

这将安全地完成这一切 - 事实上您甚至不需要该--remove-files选项 - 您可以将untar文件替换到不同的目录并验证文件名更改是否有效。也许像:

tar --xform... | tar -C ../test -x

相关内容