windowsでコピーしたファイル名に括弧(1)とか(2)とか勝手に付けられて 邪魔だから一括でリネームして括弧を削除しようかなと思った。 そこで、cygwinでbash使えば簡単にできるのかなとやってみたら結構ハマった・・ 強引かもしれないけど次の方法でできた。この例では元のファイル名のが次の一覧の場合。
$ ls a (1).txt a (100).txt a (2).txt
これをsedを使って置き換える。 ここでは、括弧)と一緒にスペースも同時にアンダースコアに変更する。 いきなりコマンド実行は怖いから、とりあえず変更後のファイル名をecho。
$ IFS=$'\n'; for f in *\(*\)*; do echo $f|sed -e 's/[ ()]/_/g'; done a__1_.txt a__100_.txt a__2_.txt
まず、forで括弧付きファイルだけを対象にしてる。 それと、IFSを改行にしてるのはファイル名にスペースが入っていて、 forで処理するときにスペースで分割されたものが渡されてきたから・・ sedでは文字を置換してるだけ。 リネーム実行と結果表示。
$ IFS=$'\n'; for f in *\(*\)*; do mv "$f" `echo $f|sed -e 's/[ ()]/_/g'`; done $ ls a__1_.txt a__100_.txt a__2_.txt以下を参考にした。
http://unix.stackexchange.com/questions/110213/remove-whitespace-and-parentheses-in-filenames-with-sed