"-x-large.jpg"で終わるjpgファイルのあるフォルダがあります。コマンドラインを使ってすべての名前を変更して-x-large .jpgになります。コマンドライン一括リネームJpgファイル
したがって、たとえば123-X-large.jpgが123.jpg
になります誰かが私はRENコマンドでこれを行うことができる方法を教えてもらえますか?
ありがとうございました。
"-x-large.jpg"で終わるjpgファイルのあるフォルダがあります。コマンドラインを使ってすべての名前を変更して-x-large .jpgになります。コマンドライン一括リネームJpgファイル
したがって、たとえば123-X-large.jpgが123.jpg
になります誰かが私はRENコマンドでこれを行うことができる方法を教えてもらえますか?
ありがとうございました。
for img in *-x-large.jpg; do mv -i -v "$img" "${img%-x-large.jpg}.jpg"; done
これは.jpg
は、ファイル名の末尾に戻って追加して、一致するすべての画像についてループし、(端部から-x-large.jpg
を除去)切り詰められた名前で新しいファイルにそれらを移動させます。私はmv -i
と対話的に呼び出すので、各ファイルを上書きする前にプロンプトが表示されます。上書きを強制するには(常に「はい」と言う)、mv
に変更します(-i
を削除してください)。上書きを防止するには(常に「いいえ」と言う)、それをmv -n
に変更します。
各名前の変更を確認したくない場合は、-v
(冗長)を削除してください。
あなたはこれらのファイルの非常に大きな数を持っている場合は、コマンドラインが(*-x-large.jpg
は、コマンドライン上に展開されますので)上記のコマンドのためにあまりにも長くなります。次のようにあなたがfind
とxargs
でそれを回避することができます。
sh <(find . -maxdepth 1 -name '*-x-large.jpg' \
|sed -r 's/(.*)(-x-large.jpg)$/mv -i "\1\2" "\1.jpg"/')
をこれが作成するために、私たちが名前を変更したいすべてのファイルのリストを生成するfind
を使用して、sed
を介してそれらをパイプ、bashのprocess substitutionを使用してシェルスクリプトを作成しますmv
コマンド。
(上記のmv
フラグを参照してください。-v
を削除しました。おそらくこれは非常に長いリストになるためです)
スクリプトを実行する前にチェックしたい場合は、以下のバージョンを参照してください。
上記の1つのライナーには、GNU bashまたはKornシェル(ksh)とGNU sedが必要です。ここ
はどちらも(3つのコマンドで)でそれを行う方法は次のとおりです。
find . -maxdepth 1 -name '*-x-large.jpg' \
|sed 's/.*/mv "&" "&/; s/-x-large.jpg$/.jpg"/' > temp.sh
sh temp.sh
rm temp.sh
Posix sedは確実にキャプチャグループをサポートしていません(\(…\)
またはsed -r
EREを呼び出すために)、したがって、我々はそれができることを期待することはできませんこのバージョンではほとんどのコマンドが書き込まれ、最後の部分が修正されます(最初の置換の後ろに二重引用符がないことは意図的です; 2番目の置換に追加します)。 Posix shell(/bin/sh
proper)はプロセス置換をサポートしていないため、一時ファイルにダンプして評価してから削除します。
Windowsのコマンドラインを参照している場合、SET /?
はあなたの友人です。そこに良い情報の読み込み。
setlocal ENABLEDELAYEDEXPANSION
set SEARCH_SUFFIX=-x-large.jpg
set REPLACE_SUFFIX=.jpg
for %%A in ("*%SEARCH_SUFFIX%") do (
set OLD_NAME=%%~nxA
set NEW_NAME=!OLD_NAME:%SEARCH_SUFFIX%=%REPLACE_SUFFIX%!
ren "!OLD_NAME!" "!NEW_NAME!"
)
endlocal
あなたはどんなコマンドラインを求めていますか? 1つのCMD(Windows)回答と1つのPosix/GNU(Macおよび/またはLinux)回答があります。 –