findコマンドを使用したとき、ほとんどの場合、ローカルドライブを検索する必要があります。しかし、私はほとんど常に非常に大きなネットワーク共有をマウントしており、これらは検索に含まれています。findコマンド、grep、その他の同様のコマンドでそれらを除外する簡単な方法はありますか?例:
find / -name .vimrc
findコマンドを使用したとき、ほとんどの場合、ローカルドライブを検索する必要があります。しかし、私はほとんど常に非常に大きなネットワーク共有をマウントしており、これらは検索に含まれています。findコマンド、grep、その他の同様のコマンドでそれらを除外する簡単な方法はありますか?例:
find / -name .vimrc
回答:
-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
find
にパイプをgrep
:この回答に示すようにsuperuser.com/questions/80033/...。最近、私は代わりにack
(betterthangrep.com)を使用ack
していますが、ローカルドライブのみを検索するオプションはないようです。
-prune
する必要があるか、それでも望ましくないファイルシステムを走査するからです。私は信じている第二の例は、あることを意図して-path
の代わりに、-name
それがパスを無視するようにします。FWIW ...最後の例は機能しますが、「現在のファイルシステム」にとどまるため、他を横断しません。
元々の質問はローカルディスクのみで見つけることでした。そのため、完全を期すために、ここで使用したものを示します。
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を含めました。
お役に立てば幸いです。