ls出力でfindコマンドを使用する方法

ls出力でfindコマンドを使用する方法

次の内容を含むファイル/ディレクトリを表示する次のコマンドがあります。EXEC_EC

注文する:

ls -ltr | grep 'EXEC_EC'

上記のコマンドを使用して:find7日前に生成されたファイルをフィルタリングするコマンドを作成できますか?

名前の付いたファイルを一覧表示し、EXEC_EC7 日より古いファイルを見つけようとします。

サンプル出力

example input: 

dr-xr-xr-x   1 home abc       999 Jun 30 11:12 EXEC_EC_ABC_1
dr-xr-xr-x   1 home abc       999 Jul 25 12:44 EXEC_EC_ABC_2
dr-xr-xr-x   1 home abc       999 Aug  1 22:10 EXEC_EC_ABC_3
dr-xr-xr-x   1 home abc       999 Aug  2 22:20 Number
dr-xr-xr-x   1 home abc       999 Aug  2 22:20 Number2

i am trying to get below output 

EXEC_EC_ABC_1
EXEC_EC_ABC_2

答え1

grepとにかく使用する場合、フィルタリングに使用することは意味がありませんfind

find . -mindepth 1 -maxdepth 1 -name '*EXEC_EC*' -mtime +7

デフォルトでは、findサブツリー全体(つまり、すべてのサブディレクトリの内容)が検索されます。-mindepth 1 -maxdepth 1この例は単一のディレクトリ内のコンテンツでのみ機能するため、これが発生しないようにしてください。ディレクトリ引数は無視さ-mindepth 1れますfind(この場合は.必須ではありませんが、一般的な場合)。-maxdepth 1サブディレクトリに降りるのを防ぎます。

答え2

これがあなたが探しているものですか?

$ find . -name '*EXEC_EC*' -mtime +7 -print

。 =は現在のディレクトリを表し、ディレクトリパスに置き換えることができます。

-mtime - ファイルの変更時間を示し、7日より古いファイルを見つけるために使用されます。

答え3

lsの出力をgrepにパイプする必要はありません。 Grepには組み込みオプションがあります。

grep -rle 'EXEC_EC'

-lはファイルのみをリストします。 -r 再帰は、すべてのファイルが現在のパスから始まり、検索されることを意味します。 -e この grep がパターンを文字列として期待した後

関連情報