2005-07 / 2005-07-14

前のエントリ: find の and/or オプション [command]
次のエントリ: find で否定条件 [command]

単純な条件付のファイルリスト取得は grep は使わず find のオプションに指定せよ
2005-07-14-2 / カテゴリ: [unix][Solaris][command] / [permlink]

某所にて、こんなコマンドを見た。
$ find . -mtime +1 -print |grep -v .gz|grep -v "lost+found"

Solaris で試したところ、
$ find . -mtime +1 ! -name "*.gz" ! -name "lost+found" -print
の方が、3倍ほど高速だった。

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 -print
| grep -v "\.gz" | grep -v "lost+found"' > /dev/null
zsh -c  > /dev/null  1.11s user 3.15s system 94% cpu 4.522 total

pts/8:miyazaki@nwmail% time zsh -c 'repeat 100 /usr/bin/find . -mtime +1 ! -name
 "*.gz" ! -name "lost+found" -print' > /dev/null
zsh -c  > /dev/null  0.40s user 1.25s system 95% cpu 1.736 total

(ファイル数)
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 -print | grep -v "\.gz" | grep
-v "lost+found" W -l
     34
pts/8:miyazaki@nwmail% /usr/bin/find . -mtime +1 ! -name "*.gz" ! -name "lost+fo
und" -print W -l
     34
pts/8:miyazaki@nwmail% find . W -l
     41

てーか、grep -v .gz | grep -v "lost+found" って、gzip で圧縮したファイルと、lost+found ディレクトリを除きたいんだろうけど、要件を満たしすぎているぞ>担当者
Referrer (Inside): [2006-02-23-2]
前のエントリ: find の and/or オプション [command]
次のエントリ: find で否定条件 [command]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12