この形式の多くのファイルを含むディレクトリがあります。以下は私のファイルの2つの例です。
file_948_of_2000_push_data_12345.log
file_950_of_2000_push_data_12345.log
ご覧のとおり、唯一の違いはファイル番号948
です950
。今、この特定の形式ですべてのファイルの名前を変更したいと思います。
files_948.log
files_950.log
私ができる最良の方法は何ですか?
ベストアンサー1
シェルパラメータ拡張の使用
$ for f in *.log; do g="${f/#file_/}"; echo mv -- "$f" "files_${g%%_*}.log"; done
mv -- file_948_of_2000_push_data_12345.log files_948.log
mv -- file_950_of_2000_push_data_12345.log files_950.log
Perlベースprename
またはrename
コマンドを使用してください。
$ prename -n -- 's/^(.*?)_(.*?)_.*\.log$/$1s_$2.log/' *.log
file_948_of_2000_push_data_12345.log renamed as files_948.log
file_950_of_2000_push_data_12345.log renamed as files_950.log
使用mmv
$ mmv -n '*_*_*.log' '#1s_#2.log'
file_948_of_2000_push_data_12345.log -> files_948.log
file_950_of_2000_push_data_12345.log -> files_950.log
必要に応じて削除するか-n
。echo