0

私は bash シェル プログラミングが初めてで、これについて助けが必要です

この形式「xxxxx_xxxxx.jpg」の複数のファイル名を持つ複数のサブフォルダーを含むディレクトリ「production\new\images\sp」があります。各サブフォルダーの各ファイル名をこの形式から「xxxxx-xxxxx.jpg」形式に変更するのが好きです。

例:

86193730_43134.jpg =====> 86193730-43134.jpg
4

3 に答える 3

4

これを試して :

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 によって作成されました。

于 2013-10-17T18:41:44.457 に答える
0

名前の変更が利用できない場合 (OSX のように):

find . -type f -name "*.jpg" -execdir bash -c 'f="{}"; nf=$(tr "_" "-" <<< "$f") && mv "$f" "$nf"' \;
于 2013-10-17T18:48:36.370 に答える
-1

これは私にとってはうまくいきます(@sputnikによって改善されました):

for f in *_*.jpg; do mv "$f" "$(echo "$f" | sed 's/_/-/')" ; done
于 2013-10-17T18:41:44.527 に答える