web-dev-qa-db-ja.com

mac os xターミナルバッチ名前変更

次の名前の一連のファイルを含むフォルダーがあります。

prefix_1234_567.png
prefix_abcd_efg.png

出力が1つになるように、1つのアンダースコアと中間のコンテンツをバッチで削除したい

prefix_567.png
prefix_efg.png

感謝しますが、完全な説明ではありません: ターミナルを使用してファイルの名前を一括変更するにはどうすればよいですか?OS Xターミナルでファイルの名前を一括変更する正規表現

98
kidnim

特定のケースでは、次のbashコマンドを使用できます(bashはmacOSのデフォルトのシェルです):

for f in *.png; do echo mv "$f" "${f/_*_/_}"; done

注:ファイル名が-で始まる可能性がある場合は、それらの前に--を配置してください[1]:
mv -- "$f" "${f/_*_/_}"

注:ドライランを実行するために、echomvの前に追加されます。削除して実際の名前変更を実行します。

コマンドラインから実行するか、スクリプトで使用できます。

  • "${f/_*_/_}"bashparameter expansion のアプリケーションです:(最初の)サブストリング一致パターン_*_はリテラル_に置き換えられ、名前から中間トークンを効果的に切り取ります。
  • _*_pattern(グロビングにも使用されるワイルドカード式)であり、regular expressionではないことに注意してください。 (パターンについて学習するには、man bashを実行し、Pattern Matchingを検索してください)。

ファイルの名前を頻繁に変更する場合は、 Perlベースの rename utilityなどの専用ツールのインストールを検討してください。 macOSでは、次のように一般的なパッケージマネージャー Homebrew を使用してインストールできます。

brew install rename

以下は、renameを使用した上部のコマンドと同等です。

rename -n -e 's/_.*_/_/'  *.png

繰り返しますが、このコマンドは予行演習を実行します。 -nを削除して、実際の名前変更を実行します。

  • bashソリューションと同様に、s/.../.../はテキスト置換を実行しますが、bashとは異なり-trueregular expressionsが使用されます。

[1]ほとんどのユーティリティでサポートされている特殊な引数--の目的は、後続の引数がoperands(値)として扱われることを示すことです。looklikeoptions-で始まるため、 Jacob C。 ノート。

205
mklement0

ファイルの名前を変更するには、renameユーティリティを使用できます。

brew install rename

たとえば、現在のディレクトリのすべてのファイル名の検索文字列を変更するには:

rename -nvs searchword replaceword *

「n」パラメーターを削除して、変更を適用します。

詳細:man rename

87
David Thomas

Sedを使用できます:

ls * | sed -e 'p;[email protected]_.*[email protected][email protected]' | xargs -n2 mv

結果:

prefix_567.png prefix_efg.png

*最初にドライランを実行するには、最後のmvechoに置き換えます

説明:

  • e:1つのsedコマンドのみのオプション。
  • p:入力をsedに出力します。この場合、名前を変更する前の元のファイル名になります。
  • @:は、sedをより読みやすくするための/文字の置換です。つまり、sed s/search/replace/gを使用する代わりに、s @ search @ replace @ gを使用します
  • _。*:アンダースコアは、実際の「。」を参照するエスケープ文字です文字0回以上(正規表現の任意の文字とは対照的に)
  • -n2:パラメーターとしてmvに渡す必要がある2つの出力があることを示します。 lsからの各入力に対して、このsedコマンドは2つの出力を生成し、mvに提供します。
12
l'L'l

次のようなファイルのバッチがありました:be90-01.pngダッシュをアンダースコアに変更する必要がありました。私はこれを使用しましたが、うまくいきました:

for f in *; do mv "$f" "`echo $f | tr '-' '_'`"; done
7
JanB

renameを使用してbrewコマンドをインストールできます。 brew install renameを実行して使用するだけです。

2
Nisim Joseph

mmvを使用する

mmv '*_*_*' '#1_#3' *.png
1
αғsнιη

これを試して

for i in *.png ; do mv "$i" "${i/remove_me*.png/.png}" ; done

別の方法を次に示します。

for file in Name*.png; do mv "$file" "01_$file"; done
1
Joolah