私は bash シェル プログラミングが初めてで、これについて助けが必要です
この形式「xxxxx_xxxxx.jpg」の複数のファイル名を持つ複数のサブフォルダーを含むディレクトリ「production\new\images\sp」があります。各サブフォルダーの各ファイル名をこの形式から「xxxxx-xxxxx.jpg」形式に変更するのが好きです。
例:
86193730_43134.jpg =====> 86193730-43134.jpg
私は bash シェル プログラミングが初めてで、これについて助けが必要です
この形式「xxxxx_xxxxx.jpg」の複数のファイル名を持つ複数のサブフォルダーを含むディレクトリ「production\new\images\sp」があります。各サブフォルダーの各ファイル名をこの形式から「xxxxx-xxxxx.jpg」形式に変更するのが好きです。
例:
86193730_43134.jpg =====> 86193730-43134.jpg
これを試して :
rename 's/_/-/' *_*.jpg
これを行うことができる場合とできない場合がある同じ名前の他のツールがあるので、注意してください。
次のコマンドを実行すると ( linux
)
$ file $(readlink -f $(type -p rename))
そして、あなたは次のような結果を持っています
.../rename: Perl script, ASCII text executable
次に、これは適切なツールのようです=)
そうでない場合、それをデフォルト(通常はすでにそうです)にするにはDebian
、次のような派生物を使用しUbuntu
ます。
$ sudo update-alternatives --set rename /path/to/rename
/path/to/rename
(コマンドのパスに置き換えますperl's rename
。
最後になりましたが、このツールはもともと、Perl の父である Larry Wall によって作成されました。
名前の変更が利用できない場合 (OSX のように):
find . -type f -name "*.jpg" -execdir bash -c 'f="{}"; nf=$(tr "_" "-" <<< "$f") && mv "$f" "$nf"' \;
これは私にとってはうまくいきます(@sputnikによって改善されました):
for f in *_*.jpg; do mv "$f" "$(echo "$f" | sed 's/_/-/')" ; done