我有一個包含一些文本文件的文件夾。我需要刪除此文件夾中每個文件名的最後一個字符。文件名如下所示。刪除文件夾中文件名的最後一個字符
1ADFG.txt
RG25A.txt
5SDFC.txt
所需的輸出
1ADF.txt
RG25.txt
5SDF.txt
我有一個包含一些文本文件的文件夾。我需要刪除此文件夾中每個文件名的最後一個字符。文件名如下所示。刪除文件夾中文件名的最後一個字符
1ADFG.txt
RG25A.txt
5SDFC.txt
所需的輸出
1ADF.txt
RG25.txt
5SDF.txt
我會做這樣的:
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
這
awk 'BEGIN {FS="."} {print substr($1,1,length($1)-1) "." $2;}'
與名稱的列表feeded應該做的工作,只要有只有1個點,一個爲擴展名。
您也可以使用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
另一種方法是使用perl rename
實用程序:
$ rename -n 's/.\./\./' *.txt
1ADFG.txt renamed as 1ADF.txt
5SDFC.txt renamed as 5SDF.txt
RG25A.txt renamed as RG25.txt
如果它不是一項家庭作業,但是對於用戶來說是真正的任務,使用你最喜歡的編輯器(Vim/Emacs)和像'moreutils'軟件包中的'vidir'這樣的工具會更實用。 –