ablog

不器用で落着きのない技術者のメモ

再帰的にファイル名に接頭辞をつける Perl ワンライナー

「特定のディレクトリ配下のファイル名に接頭辞付与かつ再帰的にこれをワンライナーで出来んか調べ中」という連絡が入った。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