「特定のディレクトリ配下のファイル名に接頭辞付与かつ再帰的にこれをワンライナーで出来んか調べ中」という連絡が入った。OSはWindowsとのこと。
書いてみると意外と短く書けた。
perl -MFile::Find -e 'find sub{rename($_,"prefix_$_") if -f}, @ARGV' .
実行してみるとこんな感じ。
$ mkdir -p hoge/{a,b,c} $ touch hoge/{a,b,c}/{foo.txt,bar.txt} $ cd hoge $ find . . ./a ./a/bar.txt ./a/foo.txt ./b ./b/bar.txt ./b/foo.txt ./c ./c/bar.txt ./c/foo.txt $ perl -MFile::Find -e 'find sub{rename($_,"prefix_$_") if -f}, @ARGV' . $ find . . ./a ./a/prefix_bar.txt ./a/prefix_foo.txt ./b ./b/prefix_bar.txt ./b/prefix_foo.txt ./c ./c/prefix_bar.txt ./c/prefix_foo.txt