初心者のメモ

Python enthusiast

Mac OSで、ディレクトリ名やファイル名、あるいはファイル内の文字列を一括置換する

ディレクトリ名/ファイル名

# "hoge"を含むディレクトリorファイルを表示
find . -name '*hoge*'

# "hoge"を"fuga"に一括置換
find . -name '*hoge*' | sed 'p;s/hoge/fuga/' | xargs -n2 mv

ファイル内の特定文字列

# hogeという文字列を含む行を表示
find . -type f | xargs grep "hoge"

# ファイル内の"hoge"を"fuga"に一括置換
find . -type f | xargs -0 sed -i '' 's/hoge/fuga/g'

# File name too long と怒られたら
find . -type f | xargs -n 10 sed -i '' 's/hoge/fuga/g'

おまけ

# カレントディレクトリ以下の"-e"で終わるファイルを削除する
find . -name "*-e" -print -exec rm {} ";"

# sed: RE error: illegal byte sequence が出たら、↓を流すだけでok
export LANG=C

参考