2006年03月13日(月) [長年日記]
- サーバが重い。このtDiaryのせいかも。最近なぜか負荷が高いのだ。
■ [unix][shell] bashで一度にたくさんのファイル名を変更する
file_1.sample.gif 〜 file_10.sample.gif というファイルのファイル名の .sample 部分を削除したかった。for文を使って、
for file in $(ls *.sample.gif); do mv $file $(echo $file|sed 's/\.sample//'); done
とした。for文て全然覚えられない。
その後ちょっと調べて、sedを使わずに
for file in $(ls *.sample.gif); do mv $file ${file/.sample/}; done
としてもできることを知った(参考:http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html#lbAZ)。
もっと簡単にできるのかな。
(追記)
renameというコマンドがあるのですね。ご指摘ありがとうございます。
(追記2)
lsなんか使わなくてよくて、
for file in *.sample.gif; do mv $file ${file/.sample/}; done
でいいみたい。試してないけど。
■ やること
- トイレットペーパー
Red Hat系のディストリビューションだとrename(1)というものがあり<br>$ rename .sample. . *.sample.gif<br>のようにできるらしいです
http://taka.no32.tk/diary/20060314.html#p03<br>32nd diary<br>Debianの/usr/bin/renameってどうなってんのかな?<br>bashで一度にたくさんのファイル名を変更する(メモの日々) にコメントしようとし, 確認のためにrename(1)をDebianで使おうと思ったら,使えない. 確かにman 1 renameではRed Hat系のrename(1)と同じ解説が出るですよ. でも,実際には/usr/bin/renameに説明と全然違うPerl..