Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 删除文件名中最后三个字符的Bash脚本_Linux_Bash_Shell_Unix - Fatal编程技术网

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

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

对于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_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])'