Linux 删除文件名中最后三个字符的Bash脚本
对于ex,文件如下所示:Linux 删除文件名中最后三个字符的Bash脚本,linux,bash,shell,unix,Linux,Bash,Shell,Unix,对于ex,文件如下所示: NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00 我想将此文件重命名为: NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN 使用${parameter%word}(删除匹配的后缀模式): 使用切割 $ echo $fn NBDG6_CDRCCN_4004_-TTNBDG6_C
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00
我想将此文件重命名为:
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN
使用
${parameter%word}
(删除匹配的后缀模式):
使用切割
$ echo $fn
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00
$ echo $fn |cut -d: -f1
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN
使用awk
echo $fn |awk -F : '{print $1}'
更多方式…根据链接:
这应该起作用:
awk '{old=$0;gsub(/...$/,"",$0);system("mv \""old"\" "$0)}'
提供文件名作为输入。
例如:
使用以下命令重命名文件:
这将从文件名中删除最后三个字符。仅使用bash:
fn='NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00'
mv "$fn" "${fn::-3}"
如果你有Ruby
echo NBDG6_CD* | ruby -e 'f=gets.chomp;File.rename(f, f[0..-4])'
你试过什么吗?
# Filename needs to be in a variable
file=NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00
# Rename file
mv "$file" "${file%???}"
fn='NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00'
mv "$fn" "${fn::-3}"
echo NBDG6_CD* | ruby -e 'f=gets.chomp;File.rename(f, f[0..-4])'