コマンドの特定の出力行を抑制します。

コマンドの特定の出力行を抑制します。

検索したいchrom/varディレクトリに。だから私はこれを実行しました。

$ ls -R | grep "^chrom"

驚くべきことに、それを示していますこれ。次の出発線はほとんどありません。

amit@ElMaverick:/var$ ls -R | grep "^chromium"

chromium-browser_55.0.2883.87-0ubuntu0.16.04.1263_amd64.deb
chromium-browser-l10n_55.0.2883.87-0ubuntu0.16.04.1263_all.deb
chromium-codecs-ffmpeg-extra_55.0.2883.87-0ubuntu0.16.04.1263_amd64.deb
ls: cannot open directory './cache/apt/archives/partial': Permission denied
ls: cannot open directory './cache/cups': Permission denied
ls: cannot open directory './cache/ldconfig': Permission denied
chromium-browser_chromium-browser.png
chromium-browser_chromium-browser.png
chromium-bsu_chromium-bsu.png
chromium-browser_chromium-browser.png
ls: cannot open directory './lib/apt/lists/partial': Permission denied
ls: cannot open directory './lib/bluetooth/78:0C:B8:46:10:D5': Permission denied
chromium-browser.conffiles
chromium-browser-l10n.list
chromium-browser-l10n.md5sums
chromium-browser.list
chromium-browser.md5sums
chromium-browser.postinst
chromium-browser.prerm
chromium-codecs-ffmpeg-extra.list
chromium-codecs-ffmpeg-extra.md5sums
ls: cannot open directory './lib/mysql': Permission denied
ls: cannot open directory './lib/mysql-files': Permission denied

出力でこれらの行を見たくありません。

ls: cannot open directory

だから、2つの質問があります。

  1. エラーなしでその行のみをフィルタリングする方法は?
  2. 特定の出力ラインを抑制する方法はありますか?

この問題だけでなく、問題に対する一般的な解決策を提示してください。

答え1

  1. 標準エラーストリームをls次にリダイレクトします/dev/null

    ls -R 2>/dev/null | grep '^chrom'
    
  2. 追加のgrep操作:

    ls -R 2>/dev/null | grep '^chrom' | grep -v 'some additional pattern'
    

findなぜ`ls`を解析しないのですか?):

find . -name 'chrom*' ! -name 'some additional pattern' 2>/dev/null

findファイル名ワイルドカードパターンの使用中にgrep正規表現を使用してください。また、ファイル()やディレクトリ()などをfind具体的に見つけることもできます。-type f-type d

find . -type f -name 'chrom*' ! -name 'some additional pattern' 2>/dev/null

コマンドの各部分は、find見つかったパス名の「テスト」と同じです。-typeファイル形式をテストし、-nameパスの最終ファイル名部分についてもテストします。テストは論理的にANDで接続されています(-o使用されていない限り)。感嘆符はテストの意味を反転します。

答え2

より良い使用次の作業に適したスイートです。

単純ユーザーとして(root以外のユーザーとしてファイルを読み取る権限がないため):

$ find /var -type f -name 'chrom*' 2>/dev/null

またはルートとして:

# find /var -type f -name 'chrom*'

特定のエラーをフィルタリングしたい場合、使用:

command 2> >(grep -v 'specific error')

警告する

出力を解析しないでくださいls

関連情報