#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 を追加したりして対象を減らす.