最近知った技を使う機会が。
$ 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の出力のリダイレクト)