最後の数文字を削除して、数百のファイル名を変更します。

最後の数文字を削除して、数百のファイル名を変更します。

何百ものファイルがあり、ファイル名から最後の7文字を削除して拡張子を維持したいと思います。

有名:

abc_xyz12_4567.txt

abcde_xyz12_4567.txt

新しい名前:

abc_xyz.txt

abcde_xyz.txt

答え1

努力する

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}' | ksh

あなたはそれを使用することができます

ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}'

プレビュー。

答え2

あなたはそれを使用することができます名前を変更する(またはprename一部のオペレーティングシステムでは):

rename 's/.{7}(\.txt)/$1/' abc*

答え3

GNUを使用するとtar

touch abc_xyz12_4567.txt abcde_xyz12_4567.txt
tar --remove-files --xform='s/\(.*\).\{7\}\./\1./' -c ./* | tar -x
ls

出力

abcde_xyz.txt  abc_xyz.txt

--remove-filesこれにより、すべての作業が安全に行われます。実際には、そのオプションは必要ありません。untarファイルを別のディレクトリに変更し、ファイル名の変更が機能していることを確認してください。おそらく:

tar --xform... | tar -C ../test -x

関連情報