#author("2020-10-29T18:33:35+09:00","default:Miyashita","Miyashita")
#author("2022-01-08T02:07:04+09:00","default:Miyashita","Miyashita")
*ファイル名やディレクトリ名にあるスペースの置換 [#x5edca57]
空白,半角スペースが入っているときに一括でリネームする方法について,意外と面倒臭かったのでメモ.~
find や grep でリストアップして for や while read を使えば良いと思ったものの,for の中でスペースを区切りとして文字列が分断されてしまう.~
find や grep でリストアップして for や while read を使えば良いと思ったものの,for の中でスペースが区切りと認識され文字列が分断されてしまう.~
ダブルクォート""をうまく使えば簡単…という訳でもなかった.~

**直下のディレクトリ名の置換 [#w8ead9bb]
直下のディレクトリ名を全部変える場合.~
ここでは半角スペースをアンダースコア _ に変える.
#codeprettify{{
for f in *\ *; do mv "$f" "${f// /_}"; done
}}
上記は直下全てのディレクトリ名に半角スペースが含まれている前提.~
~
直下の全てのディレクトリが対象ではない場合,下記のファイルの置換のスクリプトを参考に,次のようにする.
#codeprettify{{
find . -maxdepth 1 -type d | grep " " | sed -e 's/.*/"&"/; p; s/ /_/g' | xargs -n2 mv
}}


**(再帰的な)ファイル名の置換 [#y5531ed0]
半角スペースを含んだ直下のファイル全てを,_ に置換してリネームする場合.~
ここで,ディレクトリ名は事前に半角スペースが無いようにしておく必要があることに注意.~
#codeprettify{{
find . -name "*.*" | grep " " | sed -e 's/.*/"&"/; p; s/ /_/g' | xargs -n2 mv
}}

直下の全部のファイルを検索しなくていい場合は find の -maxdepth オプションを使ったり grep を追加したりして対象を減らす.

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes