web-dev-qa-db-ja.com

ファイル名のセットの文字を置き換える方法は?

私はそのような画像のセットを持っています:

01-12_13:20:12_1366x768.png  01-12_13:20:46_1366x768.png  01-12_13:21:01_1366x768.png  01-12_13:21:06_1366x768.png
01-12_13:20:40_1366x768.png  01-12_13:20:47_1366x768.png  01-12_13:21:02_1366x768.png  01-12_13:21:07_1366x768.png
01-12_13:20:42_1366x768.png  01-12_13:20:49_1366x768.png  01-12_13:21:03_1366x768.png  01-12_13:21:08_1366x768.png
01-12_13:20:44_1366x768.png  01-12_13:20:59_1366x768.png  01-12_13:21:04_1366x768.png  01-12_13:21:10_1366x768.png
01-12_13:20:45_1366x768.png  01-12_13:21:00_1366x768.png  01-12_13:21:05_1366x768.png

すべての:_に置き換える必要があります。 bashコマンドを使用してそれを行うにはどうすればよいですか?

(note : i love when everything is compact and one-lined)

1
vdegenne

単純なforループ、glob、およびパラメーター展開を使用して、これを実現できます。

for f in *:*.png; do mv -- "$f" "${f//:/_}"; done
8
nuviktor

Forループは1つの可能な解決策ですが、私はrenameを好みます。

rename "s/:/_/g" *

このツールは、指定された正規表現ルールに従って複数のファイルの名前を変更します。

4