Bash脚本删除文件名中的最后三个字符

时间:2014-01-08 08:57:29

标签: 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

6 个答案:

答案 0 :(得分:1)

使用${parameter%word}(删除匹配的后缀模式):

$ echo "$fn"
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00
$ echo "${fn%:*}"
NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN

答案 1 :(得分:0)

使用剪切

$ 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}' 

更多方式......

答案 2 :(得分:0)

根据链接here: 这应该有效:

awk '{old=$0;gsub(/...$/,"",$0);system("mv \""old"\" "$0)}'

提供文件名作为输入。 例如:

ls -1 NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00|nawk '{old=$0;gsub(/...$/,"",$0);system("mv \""old"\" "$0)}'

答案 3 :(得分:0)

使用bash string manipulations重命名文件:

# 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%???}"

这将从文件名中删除最后三个字符。

答案 4 :(得分:0)

只使用bash:

fn='NBDG6_CDRCCN_4004_-TTNBDG6_CCN_51-140108-1433-802580.00.Blk32768Blk.CCN:00'
mv "$fn" "${fn::-3}"

答案 5 :(得分:0)

如果你有Ruby

echo NBDG6_CD* | ruby -e 'f=gets.chomp;File.rename(f, f[0..-4])'