最近知った技を使う機会が。
$ ls -latr 合計 63636 drwxr-xr-x 2 kaz kaz 32768 3月 1 06:30 cddb_0301_data drwxr-xr-x 2 kaz kaz 36864 4月 1 05:00 cddb_0401_data drwxr-xr-x 2 kaz kaz 90112 5月 1 06:30 newage drwxr-xr-x 2 kaz kaz 106496 5月 1 08:00 soundtrack drwxr-xr-x 2 kaz kaz 36864 5月 1 08:30 reggae drwxr-xr-x 2 kaz kaz 131072 5月 1 08:30 blues drwxr-xr-x 2 kaz kaz 159744 5月 1 09:00 folk drwxr-xr-x 2 kaz kaz 36864 5月 1 09:00 data drwxr-xr-x 2 kaz kaz 135168 5月 1 09:00 jazz drwxr-xr-x 2 kaz kaz 536576 5月 1 09:00 rock drwxr-xr-x 2 kaz kaz 589824 5月 1 09:00 misc drwxr-xr-x 2 kaz kaz 69632 5月 1 09:00 country drwxr-xr-x 2 kaz kaz 225280 5月 1 09:00 classical drwxrwxr-x 3 kaz kaz 4096 8月 16 17:46 include drwxrwxr-x 3 kaz kaz 4096 8月 16 17:46 lib drwxrwxr-x 4 kaz kaz 4096 8月 16 17:47 man -rw-rw-r-- 1 kaz kaz 272 8月 21 00:26 pet.txt -rw-rw-r-- 1 kaz kaz 4894 8月 21 01:20 my-medium.cnf -rw-r--r-- 1 kaz kaz 8255596 8月 28 00:33 freedb-update-20080401-20080501.tar.bz2 -rw-r--r-- 1 kaz kaz 8724678 8月 28 00:33 freedb-update-20080301-20080401.tar.bz2 -rw-r--r-- 1 kaz kaz 8359595 8月 28 00:33 freedb-update-20080201-20080301.tar.bz2 -rw-rw-r-- 1 kaz kaz 152 8月 29 00:42 freedb.awk -rw-r--r-- 1 kaz kaz 37447502 8月 29 00:43 freedb.txt drwx------ 10 kaz kaz 4096 8月 29 01:39 .. drwx------ 5 kaz kaz 4096 8月 29 07:02 var drwxr-xr-x 2 kaz kaz 4096 8月 29 07:02 socket drwxr-xr-x 2 kaz kaz 4096 8月 30 00:34 info drwxrwxr-x 3 kaz kaz 4096 8月 30 00:34 share drwxrwxr-x 2 kaz kaz 4096 8月 30 00:34 bin drwxrwxr-x 2 kaz kaz 4096 8月 30 00:34 libexec drwxrwxr-x 24 kaz kaz 4096 8月 30 00:34 .
いろいろ合わせて、削除対象を絞りこみ。最後の部分はgawkを使う。
$ find . -maxdepth 1 -type d -mtime +30 | egrep -v '_[0-9]{4}_' | gawk '{ print $0 }' ./country ./misc ./blues ./classical ./rock ./data ./soundtrack ./jazz ./reggae ./newage ./folk
gawkの記述を下のように変更して、実行
gawk '{ printf("rm -rf %s\n", $0) | "sh" }END { close("sh")}
$ find . -maxdepth 1 -type d -mtime +30 | egrep -v '_[0-9]{4}_' | gawk '{ printf("rm -rf %s\n", $0) | "sh" }END { close("sh")}'無事に削除ができた
合計 61532 drwxr-xr-x 2 kaz kaz 32768 3月 1 06:30 cddb_0301_data drwxr-xr-x 2 kaz kaz 36864 4月 1 05:00 cddb_0401_data drwxrwxr-x 3 kaz kaz 4096 8月 16 17:46 include drwxrwxr-x 3 kaz kaz 4096 8月 16 17:46 lib drwxrwxr-x 4 kaz kaz 4096 8月 16 17:47 man -rw-rw-r-- 1 kaz kaz 272 8月 21 00:26 pet.txt -rw-rw-r-- 1 kaz kaz 4894 8月 21 01:20 my-medium.cnf -rw-r--r-- 1 kaz kaz 8255596 8月 28 00:33 freedb-update-20080401-20080501.tar.bz2 -rw-r--r-- 1 kaz kaz 8724678 8月 28 00:33 freedb-update-20080301-20080401.tar.bz2 -rw-r--r-- 1 kaz kaz 8359595 8月 28 00:33 freedb-update-20080201-20080301.tar.bz2 -rw-rw-r-- 1 kaz kaz 152 8月 29 00:42 freedb.awk -rw-r--r-- 1 kaz kaz 37447502 8月 29 00:43 freedb.txt drwx------ 10 kaz kaz 4096 8月 29 01:39 .. drwx------ 5 kaz kaz 4096 8月 29 07:02 var drwxr-xr-x 2 kaz kaz 4096 8月 29 07:02 socket drwxr-xr-x 2 kaz kaz 4096 8月 30 00:34 info drwxrwxr-x 3 kaz kaz 4096 8月 30 00:34 share drwxrwxr-x 2 kaz kaz 4096 8月 30 00:34 bin drwxrwxr-x 2 kaz kaz 4096 8月 30 00:34 libexec drwxrwxr-x 13 kaz kaz 4096 8月 30 01:03 .
参照:GNU Awk ユーザーズガイド: General Introduction(4.6 print や printfの出力のリダイレクト)