2017-11-09 10 views
0

linuxを使用して10個のファイルの名前を変更したいと考えています。Linuxの名前変更now.jpg.1〜spy_1.html

をspy_.htmlし、他の9 spy_htmlする

now.jpg.2をspy_html.1する

now.jpg.1なければならない

now.jpg .2

など。

これまでのところ、私はこれが出ている:

for f in *.jpg 
do 
mv “$f” “(“%s”%p”%i”%o”%n”%_).html” 
done 

しかし、それは動作しません。任意のヒントをいただきました。

答えて

0

正規表現を使用して、オプションの数値拡張を取得し、それをターゲットファイル名に追加することができます。これはbash:

for f in *.jpg* 
do 
    if [[ $f =~ now\.jpg(\.[0-9])? ]]; then 
    mv "$f" "spy.html${BASH_REMATCH[1]}" 
    fi 
done 

とすれば、spy.html[.#]とする必要があります。数字の拡張子(例:spy_html.1)のアンダースコアを使用する場合は、now.jpgnow.jpg.*の2つのコマンドを発行する方が簡単です。

+0

ありがとうございました。私はどのように行くのかについていた。私は2つのコマンドで解決策を検討しました。なぜなら、私は特にspy_html.1というアンダースコアを求めていたからです – Quiery

関連する問題