[解決済み] macOSのターミナルでファイル名を一括変更するには?
質問
私は、一連のファイル名を持つフォルダを持っています。
prefix_1234_567.png
prefix_abcd_efg.png
私は 一括削除 というように、アンダースコアと中身の1つを削除したいのですが、出力は以下のようになります。
prefix_567.png
prefix_efg.png
関連性はあるが、完全な説明にはなっていない。
どのように解決するのですか?
あなたの特定のケースでは、次のように使用することができます。
bash
コマンドを使うことができます (
bash
はmacOSのデフォルトのシェルです)。
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
注意: もしファイル名が
-
で始まる可能性がある場合は
--
をそれらの前に置く[1]。
mv -- "$f" "${f/_*_/_}"
注意
echo
の前に
mv
に付加されます。実際のリネームを行うにはこれを削除してください。
コマンドラインから実行するか、スクリプトで使用することができます。
-
"${f/_*_/_}"
はbash
パラメータ展開 : (最初の)部分文字列のマッチングパターン_*_
はリテラル_
に置き換えられ、名前から中間のトークンが効果的にカットされます。 -
注意点として
_*_
は パターン (グロビングにも使われるワイルドカード表現)ではなく 正規表現 ではありません (パターンについて学ぶにはman bash
を検索しPattern Matching
).
頻繁にファイルのバッチリネームをすることがある場合。
のような特別なツールのインストールを検討してください。
rename
ユーティリティ
.
macOS では、一般的なパッケージマネージャを使用してインストールすることができます。
ホームブリュー
を使ってインストールできます。
brew install rename
上のコマンドと同等のものを
rename
:
rename -n -e 's/_.*_/_/' *.png
再度、このコマンドはドライランを実行します。
-n
を削除して、実際のリネームを実行してください。
-
と同様に
bash
の解決策になります。s/.../.../
はテキスト置換を行いますがbash
- とは異なり 正規表現 が使用されます。
[1] 特別引数の目的
--
の目的は、ほとんどのユーティリティでサポートされているように、後続の引数が、以下のように扱われるべきであることを示すことです。
オペランド
(値)として扱われることを示すもので、たとえそれが
が
のように
オプション
で始まるため
-
のように
ジェイコブC
のノートです。
関連
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
-
[解決済み] BashでDo-whileループをエミュレートする
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] macOSアップデート後、Gitが動作しない(xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】シェルスクリプトで整数式が期待されるエラーが発生する
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み] 部分的にコピーされたファイルでscpを再開する方法は?[クローズド]です。
-
[解決済み] Bashでの動的な変数名
-
[解決済み] bash スクリプトの "${BASH_SOURCE[0]}" と $( cd $( dirname "xxx" && pwd )) の意味について
-
[解決済み] mkdir コマンドが bash スクリプトで見つかりません。
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] Bashで最新のディレクトリを変数に取得する
-
[解決済み] findコマンドと一緒に使用するとエラー 'rm: missing operand' が発生する。
-
[解決済み] BashでDo-whileループをエミュレートする