IT備忘録

LINUX関連 .NET関連 DB関連 正規表現 その他 情報

6日以上前のファイルを削除
find /mnt/extdisk -maxdepth 1 -regex '.*\.tar.gz' -ctime +6 -exec rm -f {} \;

こっちのほうがいいかも
find . -type f -mtime -30 |xargs rm

確認してコピーしておく
find . -type f -mtime -30 |xargs -iX cp --parents -rp X ~/tmp


参照ページ:http://d.hatena.ne.jp/mrgoofy33/20100823/1282576209
findで特定のディレクトリを検索対象外(除外)にする
コマンド, unix, linux

複数ディレクトリをfindで検索する場合、特定のディレクトリを検索対象外にする方法です。

findコマンドの「-prune」と「-o (-or)」オプションの組み合わせで実現することができました。

UNIXの部屋 コマンド検索: find より

-prune

それ以上ディレクトリを降りない。特定のディレクトリ以下を除外する場合に有用。

-o または -or

検索条件を OR で結ぶ。

% find . -name abc -or -type d

⇒ abc という名前のファイル・ディレクトリか、あるいはディレクトリを検索


例)1つのディレクトリを対象外として、ファイルを検索する

「-path "./foo" -prune」で「./foo」以下については、それ以上ディレクトリを降りない指定をします。

これだけだと、「./foo」しか見つからない形になってしまうので、「-o」で追加の検索条件を指定します。

この例では「-type f -name "*.html"」でhtmlファイルを探すようにしています。

サンプル)ディレクトリ構造

(root)
├─ index.html

├─bar
│└─ bar.html

└─foo
└─ foo.html
サンプル)findコマンド

$ find . -path "./foo" -prune -o -type f -name "*.html"
./bar/bar.html
./foo
./index.html
→「./foo/foo.html」はヒットしない。


例)2つ以上ディレクトリを対象外として、ファイルを検索する

上記と同じような形で、2つ以上ディレクトリを対象外としたい場合、「-o」オプションで条件を追加することで可能です。

※例コマンドの検索対象ディレクトリは上記と同じです。

サンプル)findコマンド

$ find . -path "./foo" -prune -o -path "./bar" -prune -o -type f -name "*.html"
./bar
./foo
./index.html
→「./bar/bar.html」「./foo/foo.html」はヒットしない。


補足)-prune について

「-prune」はディレクトリ以外(ファイル)にも使用出来るみたいですが、これはあまり意味がないようです。

(他のコマンドで代用可能であるため。)

UNIXの部屋 コマンド検索: find より

実際は -prune はディレクトリ以外にも効果があるので、

% find . -name "*.txt" -prune -o -print

⇒ *.txt というファイルを除外する。

という使い方もできるが、これは

% find . ! -name "*.txt"

と同じである。

 リンク

Apache 2.0とTomcat 5.0の連携
dnotifyを利用する場合
SQLのテクニックを記
Oracleのテクニックを記
VARCHAR2をNUMBERに変換する際、桁数で怒られるときに桁数を無視するfunction
tracの設定メモ
inotifyを利用する場合
監視サーバーの設
SSLキー作
監視サーバーの設
[IT備忘録]のサイト内にある文章の正確性については一切責任を持ちません。
実開発の際には、技術的内容は十分確認した上で作業してください。

(C) 2010 IT備忘録 All rights reserved.