删除文件夹中文件名的最后一个字符

时间:2014-01-05 16:19:19

标签: sed awk sh

我有一个包含一些文本文件的文件夹。我需要删除此文件夹中每个文件名的最后一个字符。文件名如下所示。

1ADFG.txt
RG25A.txt
5SDFC.txt

期望的输出

1ADF.txt
RG25.txt
5SDF.txt

4 个答案:

答案 0 :(得分:3)

我会这样做:

for i in *.txt; do echo "mv '$i' '${i/?.txt}.txt'"; done

如果输出看起来不错,则将其传递给| sh,即:

for i in *.txt; do echo "mv '$i' '${i/?.txt}.txt'"; done | sh

答案 1 :(得分:0)

awk 'BEGIN {FS="."} {print substr($1,1,length($1)-1) "." $2;}'

如果只有1个点,那么名称列表应该可以完成这项工作。

答案 2 :(得分:0)

你也可以像这样使用sed

$ ls -1
1ADFG.txt
5SDFC.txt
RG25A.txt
$ ls -1|sed "s/\([A-Za-z0-9]\{4\}\)[A-Za-z0-9]*\(\.[A-Za-z0-9]\)/\1\2/g"
1ADF.txt
5SDF.txt
RG25.txt

答案 3 :(得分:0)

另一种方法是使用perl rename实用程序:

$ rename -n 's/.\./\./' *.txt
1ADFG.txt renamed as 1ADF.txt
5SDFC.txt renamed as 5SDF.txt
RG25A.txt renamed as RG25.txt