ディレクトリから現在のファイル名を削除して英数字のファイル名に変更するには、どの名前変更コマンドを使用できますか?
例えばgg0001
、、、gg0002
ちょっと待って?私はこのコマンドがすべての種類の拡張子を持つファイルを処理できるようにしたいです。その拡張を維持したい。
rename
私はPerlを使用することを好みます。
このコマンドを試しましたが、ファイル名の前に「gg」が追加されますが、元のファイル名を変更したいと思います。
rename 's/^/gg_/' *
ベストアンサー1
実際にはコマンドは必要なく、rename
シェルで直接実行できます。
c=0; for i in *; do let c++; mv "$i" "gg_$(printf "%03d" $c)${i#"${i%.*}"}"; done
printf "%03d" $c
変数は印刷され、必要$c
に応じて前にゼロが3つ追加されます。let c++
カウンター増加() $c
。拡張子を抽出します${i#"${i%.*}"}
。関連コンテンツをもっと見るここ。
私はこれを使用しませんrename
。計算できないと思います。有効なPerlコンストラクタにs/.*/$c++/e
失敗し、計算を実行する他の方法はありません。これはまだループで実行し、他のものがカウンタを増やす必要があることを意味します。それは次のとおりです。
c=0;for i in *; do let c++; rename -n 's/.*\.(.*)/'$c'.$1/' "$i"; done
しかし、より簡単な方法を使用するよりも利点はありませんmv
。