OSX终端删除文件名的最后7个字符

时间:2015-09-08 13:41:54

标签: macos bash shell

嗨有一种简单的方法可以重命名一堆文件,如:

A_16-25-55-313.txt

B_16-25-55-313.txt

以便文件夹中的所有文件看起来像:

A_16-25.txt

B_16-25.txt

在这个例子中,我必须摆脱扩展前的最后7个字符。 我使用的是OS X终端 并试过像:

for i in *.txt do set fName==$i
do mv $fName $fName:~0,-7.txt

哪个不起作用,并且:

for i in *
do
j=`echo $i | sed -e ’s/.......$//‘`
mv $i $j
done

哪个也不行。

1 个答案:

答案 0 :(得分:1)

不确定您使用的bash是什么参考,但以下是您想要的:

for i in *.txt; do
    # Get the filename minus the .txt suffix 
    drop_ext=${i%.txt}
    # Drop the last seven characters, then readd the suffix
    fName=${drop_ext%???????}.txt
    mv "$i" "$fName"
done

实际上,如果你知道后缀是4个字符,你可以在添加后缀之前立即删除最后11个字符。

for i in *.txt; do
    mv "$i" "${i%???????????}.txt"
done