ディレクトリには次の形式のファイルが複数あるので、すべてのファイルの名前を次のように変更したいと思います。
~から
27_07_2017file1vc001vpxd-1605.log
27_07_2017case2vc001vpxd-9169.log
27_07_2017server3vc001vpxd-4640.log
27_07_2017file24vc001vpxd-9170.log
27_07_2017files5vc001vpxd-4641.log
到着
file1vc001vpxd-1605_27_07_2017_1.log
case2vc001vpxd-9169_27_07_2017_1.log
server3vc001vpxd-4640_27_07_2017_1.log
file24vc001vpxd-9170_27_07_2017_1.log
files5vc001vp-4641_27_07_2017_1.log
ファイルの種類をdatefilename.log
次から変更する必要があります。filename.date_1.log
rename
私のLinuxサーバーでは機能しないので、コマンドを提案しないでください。
ありがとう
ベストアンサー1
これはbashスクリプトです(一般的な状況に合わせて修正OPの修正された質問に基づいています):
for file in ./*.log; do
echo mv "$file" "${file:12:$((${#file}-16))}_${file:2:10}_1.log";
done
上記は${file:X:Y}
bashサブストリング拡張構文${variable:offset:length}
で、次のようになります。長さ文字数オフセットそれvariable
(または引数)でmv
コマンドを使用して名前を変更します。echo
結果が希望の結果であると確信したら、削除してください。
上記の結果は次のとおりです。
mv ./27_07_2017case5.log case5_27_07_2017_1.log
mv ./27_07_2017file1vc001vpxd-1605.log file1vc001vpxd-1605_27_07_2017_1.log
mv ./27_07_2017file2vc001vpxd-9169.log file2vc001vpxd-9169_27_07_2017_1.log
mv ./27_07_2017file3vc001vpxd-4640.log file3vc001vpxd-4640_27_07_2017_1.log
mv ./27_07_2017file4vc001vpxd-9170.log file4vc001vpxd-9170_27_07_2017_1.log
mv ./27_07_2017file5.log file5_27_07_2017_1.log
mv ./27_07_2017file5vc001vpxd-4641.log file5vc001vpxd-4641_27_07_2017_1.log
mv ./27_07_2017number-blahblahblah5.log number-blahblahblah5_27_07_2017_1.log
mv ./27_07_2017number-blahblahblah5AAABBC.log number-blahblahblah5AAABBC_27_07_2017_1.log
mv ./27_07_2017number5.log number5_27_07_2017_1.log