2014-01-05 76 views
-2

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

1ADFG.txt 
RG25A.txt 
5SDFC.txt 

所需的输出

1ADF.txt 
RG25.txt 
5SDF.txt 
+0

如果它不是一项家庭作业,但是对于用户来说是真正的任务,使用你最喜欢的编辑器(Vim/Emacs)和像'moreutils'软件包中的'vidir'这样的工具会更实用。 –

回答

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 
0

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

与名称的列表feeded应该做的工作,只要有只有1个点,一个为扩展名。

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 
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 
相关问题