Skip to main content

ファイル名の空白をなしにした版に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} は文字列置換