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


34

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

find / -name .vimrc

回答:


46

-fstype localオプションを使用して以下を見つけます。

find / -fstype local -name .vimrc

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

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

更新:

local擬似fstypeには、OS Xに付属しているのfindのバージョンで利用可能ですが、GNUの検索(ではないGNUの発見によって認識のFSTypes)。

GNU findを使用している場合(ほとんどのLinuxシステムで使用されているように)、代わりに以下を使用します-mount

find / -mount -name .vimrc

それはgrepでも機能しますか?
漂流物N. Jetsam

1
grepにはそのようなオプションはないと思います。私は通常使用findにパイプをgrep:この回答に示すようにsuperuser.com/questions/80033/...。最近、私は代わりにackbetterthangrep.com)を使用ackしていますが、ローカルドライブのみを検索するオプションはないようです。
ダグ・ハリス

私の編集はこれに拒否されたので、コメントにしただけです。基本的に最初の例は間違っています。追加-pruneする必要があるか、それでも望ましくないファイルシステムを走査するからです。私は信じている第二の例は、あることを意図して-pathの代わりに、-nameそれがパスを無視するようにします。FWIW ...最後の例は機能しますが、「現在のファイルシステム」にとどまるため、他を横断しません。
rogerdpack


0

元々の質問はローカルディスクのみで見つけることでした。そのため、完全を期すために、ここで使用したものを示します。

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への移行を開始したときにxfsファイルシステムのORを含めました。

お役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.