web-dev-qa-db-ja.com

マウントされた共有を検索せずにfind / grepコマンド

Findコマンドを使用したときは、ほとんどの場合、ローカルドライブを検索する必要があります。しかし、私はほとんど常に超大規模なネットワーク共有をマウントしており、これらは検索に含まれています。 findコマンド、grep、および他の同様のコマンドでそれらを除外する簡単な方法はありますか?例:

検索/ -name .vimrc

37

-fstype localオプションを使用して、以下を検索します。

find / -fstype local -name .vimrc

特定のパスのみを除外する場合は、-Pruneを使用できます。

find / -name /path/to/ignore -Prune -o -name .vimrc

更新:

local psuedo-fstypeは、OS Xに付属しているバージョンのfindで使用できますが、GNU find( fstypescognited by GNU find )。

GNU find(ほとんどのLinuxシステムで使用されている)を使用している場合)、代わりに-mountを使用する必要があります。

find / -mount -name .vimrc
52
Doug Harris

man findは以下を示します。

-xdev他のファイルシステムのディレクトリを降りないでください。

22
penguinjeff

元々の質問はローカルディスク上でのみ検索することでしたので、完全を期すために、ここで私が使用したものを使用します。

for PART in `awk '(!/^#/ && $6 != "0" || $3 == "xfs" ) { print $2 }' /etc/fstab 2>/dev/null`; do find $PART -xdev -name .vimrc -print 2>/dev/null; done

Fstabが適切に設定されている限り、ローカルディスクのみを検索します。つまり、cifsマウントでは、最終的なフラグを0に設定する必要があります。RHEL7への移行を開始したときに、OR for xfs filesystemsを含めました。何度も再起動した後、ディスクの再編成を実行してください。

お役に立てば幸いです。

0
Shaun Saunders