Xを見つけましたが除外しますか?

Xを見つけましたが除外しますか?

もともと発見はOS Xで動作しましたが、Ubuntu 16.04では動作しません。

find $HOME -type f -name "*.tex" -exec grep -l "masi" {} + |  vim -R -

(これは単純化されたバージョンです。vim部分は省略できますが、ここでは結果が処理中であることだけが表示されます。)

Ubuntu 16.04では、これらの権限拒否メッセージが表示されます。実際、これらのファイルはほとんど.dotFilesのようです。

drwx------  2 root root  4096 touko 29 23:59 .gvfs

私は合わせることができません。パスワード私が検索したものを見つけました。したがって、すべてのファイルが検索されますが、権限が拒否されたファイル(! -readable -prune)は除外されます。擬似コード

find $HOME -type f -name "*.tex" \ 
  -o ! -readable -prune -o \    
  -exec grep -l "masi" {} + 

しかし、リストのような多くのメッセージを提供すると、あまりにも拡張されているようです。

grep: /home/masi/.conda/envs/my_root/src/linux-headers-4.2.0-27/include/linux/power: Is a directory`
...

OS Xとはかなり異なります。代わりに、成功せずに構造を解析しようとしましたが、-perm a+r依然として権限拒否メッセージが表示されます。

Gilesの答えを振り返ると

私の最終的な解決策は

find $HOME +perm 0666 -type f -name ...

readableこれはPOSIXではなく、OSXでは機能しないためです。


検索で検索と除外を組み合わせる方法は?

ベストアンサー1

あなたの質問に対する答えは、ブール代数と演算子の優先順位に関連しています。あなたのfindコマンドは次のとおりです。

  • 通常のファイルで名前が一致すると、*.tex何もしません。
  • そうではなく、読み取れない場合は繰り返さずにスキップします。
  • それ以外の場合は実行してくださいgrep

読みやすさテストから始めましょう。これにより、目的のファイルと一致するテストが実行したいコマンドに追加されます。

find ~ ! -readable -prune -o \    
       -type f -name "*.tex" -exec grep -l "masi" {} + 

あるいは、LinuxとOSXを使用しているように見えるので、GNU grepの再帰ツールを使用できます。

grep -s -r --include='*.tex' -l 'masi' ~

ホームディレクトリに読み込めないファイルがあってはいけません。ルートに属するファイルがあるとは、一部のプログラムをルートとして実行し(おそらく経由でsudo)、自動生成されたステータスファイルまたは一時ファイルが残っていることを意味します。

~/.gvfsうんルート重力加速度センサーマウントポイント階層は、root以外のユーザーに属している必要があります。そうしないと、実行したいGVFSのインストール(リムーバブルメディア、ネットワークドライブなど)が機能しなくなります。ランニングsudo rmdir ~/.gvfs。まだ使用していて削除できない場合は、別の場所に移動して(sudo mv ~/.gvfs〜/.gvfs.root`)、現在インストールされているものを削除したら削除してください。

おすすめ記事