ファイル名の空白をなしにした版にrename
やりたいこと
- ファイル名/フォルダ名に空白が入っているのをまとめてrenameしたい
- 空白が入っていると、 VSCode で grep したときにファイル名にリンクで飛べないから
実装例 (Bash)
bash
#!/bin/bash
function rename_files()
{
BFR="$1"
AFT="${1// /}"
mv "$BFR" "$AFT"
}
export -f rename_files
find 機能別 -name '* *' | sort -r | perl -pe 's/\n/\0/' | xargs -0 -I% bash -c 'rename_files "%"'
ポイント
find -print0 | xargs -0
パターンを使いたかったが、sort をするので、perl -pe
で自分で区切り文字を変換しているxargs
に、定義した関数を渡せないのでexport -f
したあとbash -c
で渡している${X//Before/After}
は文字列置換