*.xml
サーバー上のすべてのファイルを検索するコマンドがあります。私は以下を使用しています:
find -type f -exec grep -il "xml" {} \;
これは素晴らしいですが、おそらくこれらのファイルはサーバーに何千ものあり、私のウィンドウがいっぱいです。
私はレポートを生成してサーバーのどこかに保存したり、電子メールで送信したいと思います。
また、このレポートを実行するときに過去5日間のみ確認するように指定したいと思います。
ベストアンサー1
まず、ファイルをどこかに保存してみましょう。
あなたの命令に従って:
find -type f -exec grep -il "xml" {} \;
そして次の内容を読んでください:シェルの制御およびリダイレクト演算子は何ですか?そこには次のように書かれています。
>
:コマンドの出力をファイルに送信します。
次のようにコマンドを作成します。
find -type f -exec grep -il "xml" {} \; > /tmp/report.txt
この機会を借りて、現在のコマンドに対するfind
いくつかの調整を提案します。
個人的な好み(または私のレガシーメモリ)かもしれませんが、私は次のように起動ディレクトリを指定するのが好きです
find
。find / -type f ....
これにより、コマンドやスクリプトをどこで実行しても、常に期待される結果が得られます。
- コマンドは、「* .xml」ファイルを検索する代わりに
find
(大文字と小文字を区別する)文字列「xml」を含むファイルを検索します。コンテンツを検索したい場合は、この段落の読み取りを中止してください。 「xml」を含むファイルを本当に探したい場合ファイル名find / -type f -iname '*xml*'
--whereは、大文字と小文字を区別しない「xml」を含むファイル名と一致するようにiname
指示します。find
次の場所にある「xml」にのみ興味がある場合終わりファイル名の前にピリオドを追加するには、find / -type f -iname '*xml'
またはを使用します。... -iname '*.xml
2a.場合はいファイルの内容を検索するには、通常の場合をgrep
grepに固定文字列を検索していることを知らせるものに変更することをお勧めします... grep -Fil xml ...
。
過去5日以内に変更されたファイルのみを報告するようにfindに指示するには、を使用します
-mtime -5
。LinuxにQタグを付けたので、GNUを見つけたとします(
man find
そして確認するには、説明で「GNU」を見つけます)。この場合、find
次の構文を使用して各execに複数のファイルを渡すように指示することで、プロセスを高速化できます。find / -type f -mtime -5 -exec grep -Fil xml {} + > /tmp/report.txt