FC2ブログ

[find,sed,xargs mv] ディレクトリ/ファイルの名前一括変更

■ ディレクトリ・ファイルの名前一括変更をするには、sedスクリプトとxargsコマンドを用いれば可能。

find ./ -type d or f | sed 'p;s/before/after/' | xargs -n 2 mv
→ find ./ -type d or f にて、対象ディレクトリ名またはファイル名を標準出力に1行1つずつ表示
→ | sed 'p;' にて、置換前対象ディレクトリ名/ファイル名自体を標準出力に "一旦" 表示
→ | sed 's/before/after/' にて、置換後ディレクトリ名またはファイル名を標準出力に表示
  → この時点で、置換前/後対象ディレクトリ名/ファイル名を標準出力に "1行毎交互" に表示 (★)
これを xargs コマンドに流し込むが、
→ | xargs -n 2 として、置換前 置換後、置換前 置換後、・・・ という区切り方にし、(★)
  これを mv コマンドに与える。
⇒ sed 'p;' にて1行毎交互、xargs -n 2 にて置換前 置換後
  という区切り方を構築するのがポイント。


参考文献:
■ Sed でファイル名と内容を一括置換

関連記事
スポンサーサイト



コメント

非公開コメント