何百ものファイルがあり、ファイル名から最後の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