(2005-07の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2005-07-14 Thu (他の年の同じ日: 2004 2007)

find で否定条件
2005-07-14-3 / カテゴリ: [unix][linux][command] / [permlink]

! をつける
$ find . ! -name "foobar"
foobar 以外を検索

単純な条件付のファイルリスト取得は 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 オプション
2005-07-14-1 / カテゴリ: [unix][Solaris][command] / [permlink]

Solaris の /usr/bin/find は、GNU findutil の -and/-or はない。
かわりに、-a/-o があるので、こっちを使う。
GNU find も、-and/-or の代わりに -a/-o が使える。こっちで覚えた方がいいかも。

ついでに、-and は省略しても同じ条件になる。
って、マニュアルにかいてあるし^^;;;
       expr1 expr2
              And (implied); expr1 が偽の場合は expr2 は評価されない。

       expr1 -a expr2
              expr1 expr2 と同じ。

       expr1 -and expr2
              expr1 expr2 と同じ。

関連: [2005-03-02-1]
前の日 / 次の日 / 最新 / 2005-07

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