2017-08-08 4 views
1

(私はUbuntuを持っています) 私のコンピュータにはいくつかのgitリポジトリがあります。ですから、すべてのステータスを1つのコマンドに入れたいと思っています。 (:エコーpwd:;;; CDの$ dの/ ..行うfind/-name ".git"で日間@jmlane Gitの状況を、エコー; done)を、私はこの答えHow can I view all the git repositories on my machine?を見つけ権限のないすべての.gitメッセージを見つける方法はありますか?

しかし、私はたくさんのメッセージを "許可が拒否されました" 持っています。だから私は検索し、この回答を見つけたHow can I exclude all "permission denied" messages from "find"?しかし、私はどのように私の問題にそれを追加するのか分からない。

私はfind -name ".git" | grep -v "Permission non accordée"を試してみましたが、私はちょうどfind -name ".git"と同じ結果になります

find: «./.cache/dconf»: Permission non accordée 
find: «./.dbus»: Permission non accordée 
./Documents/these/programmes/programme_ccm/.git 
./Documents/these/rapports/centralisation/.git 
./Documents/these/rapports/Barberis_review_2016/.git 
./Documents/these/rapports/biblio/.git 

ノー結果

find -name ".git" 2> grep -v "Permission non accordée"を試してみました。しかし、私はfind -name ".git" | grep "Permission non accordée"をしようとしたとき、私は

find: «./.cache/dconf»: Permission non accordée 
find: «./.dbus»: Permission non accordée 
+1

su/sudoでコマンドを使用して管理者権限で起動しようとしましたか? – vmchar

+0

可能な複製https://stackoverflow.com/questions/762348/how-can-i-exclude-all-permission-denied-messages-from-find – AllAnimals

+0

@vmchar私は今すぐ試しました:動作しません – Ccile

答えて

1

この加工さを得ます私のマシンでうまくいく:

find -name ".git" 2> /dev/null 

エラーストリームを特別なファイル/ dev/nullに置きます。これはsimpy voidnessです。

あなたのコード:

find -name ".git" 2> grep -v "Permission non accordee" 

は、作業ディレクトリにという名前のgrepをファイルにエラー出力をリダイレクトしようとしていました。

+0

とbtw findのフラグとして-vを設定するので、findはこのフラグを知らず、エラーコードとエラー出力 'Unknown flag'を返します。 – sudo97

+0

私はこのコマンドを理解できませんでした^^ したがって、2>はエラーをリダイレクトすることです。そして、私は 'Permission denied'エラーだけを伝えたいのですが、他のものは拒否しませんか? なぜパイプ|うまくいかなかった? – Ccile

+0

pipeは標準出力をgrepに渡すので、エラー出力は手動で表示されます。 find -name ".git" 2>&1 | grep -v 'パーミッションが拒否されました'パイプの場合、私のマシン上では最初に拒否されたパーミッションについて、次にgrepでフィルタリングされた、論理的なパーミッションが表示されます。最初のfindはそれを仕事にしてすべてを見つけ出し(エラーストリームはリダイレクトされないのでエラーを出力します)、grepの入力として標準出力をリダイレクトしますが、すでにエラーはありません。私がここで示した行では、エラーストリームを見つけてstd(2>&1)にリダイレクトし、それもうまく動作します。 – sudo97

0

locateパッケージがインストールされており、updatedbcronから実行されていますか?はいの場合、locateはあなたの友人です。コマンド

​​

は、findよりはるかに高速です。また、locateは、権限を自動的に考慮に入れます。出力には、現在のユーザーがアクセスできる.git*.gitのリポジトリのみが表示されます。

+0

私は見るでしょう。私はまだ "+1"することができませんので、私は感謝を言う – Ccile

+0

私は 'locate'と' man updatedb'私にも私はそれを持っていると仮定ドキュメントを与えた。私は 'cron'について知らない。 あなたが与えたコマンドは、私には同じ結果を与えません。私は/オラクルを持っています。jdeveloper.git'ファイルと私はそれを持っていませんが、最悪の場合、私は5つではなく1つの/.gitしか持っていません – Ccile

関連する問題