2017-11-23 8 views
1

lsコマンドとgrepコマンドから返されたファイルをgrepする方法lsとgrepが返すファイルの内容をgrepするにはどうすればよいですか?

私は次の文字列1693701622

のための上記のファイルを検索したい

# ls -alrth /app/splunk_export/*HSS* | grep 'Nov 24 11:*' 
-rw-r--r-- 1 root root 63K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM_CGP.csv 
-rw-r--r-- 1 root root 40K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM_USCDB.csv 
-rw-r--r-- 1 root root 138K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 167K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR_FE.csv 
-rw-r--r-- 1 root root 71K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR_USCDB.csv 
-rw-r--r-- 1 root root 63K Nov 24 11:17 /app/splunk_export/A20171124.1000+1300-1100+1300_HSS01KPR.csv 
-rw-r--r-- 1 root root 25K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01HAM_CGP.csv 
-rw-r--r-- 1 root root 75K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 90K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01KPR_FE.csv 
-rw-r--r-- 1 root root 28K Nov 24 11:17 /app/splunk_export/A20171124.1030+1300-1100+1300_HSS01KPR.csv 
-rw-r--r-- 1 root root 15K Nov 24 11:17 /app/splunk_export/A20171124.1045+1300-1100+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 140K Nov 24 11:17 /app/splunk_export/A20171124.1045+1300-1100+1300_HSS01KPR_FE.csv 
-rw-r--r-- 1 root root 15K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1115+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 140K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1115+1300_HSS01KPR_FE.csv 
-rw-r--r-- 1 root root 25K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01HAM_CGP.csv 
-rw-r--r-- 1 root root 75K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 91K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01KPR_FE.csv 
-rw-r--r-- 1 root root 28K Nov 24 11:34 /app/splunk_export/A20171124.1100+1300-1130+1300_HSS01KPR.csv 
-rw-r--r-- 1 root root 15K Nov 24 11:34 /app/splunk_export/A20171124.1115+1300-1130+1300_HSS01HAM.csv 
-rw-r--r-- 1 root root 139K Nov 24 11:34 /app/splunk_export/A20171124.1115+1300-1130+1300_HSS01KPR_FE.csv 

私は、xargsのを使用してみましたが、いくつかのガイダンスを必要としています。

# ls -alrth /app/splunk_export/*HSS* | grep 'Nov 24 11:*' | xargs grep -l 1693701622 
grep: invalid option -- '-' 
Usage: grep [OPTION]... PATTERN [FILE]... 
Try `grep --help' for more information. 

注:可能なhereを複製するが、私は私が

+0

'見つけます。 - 型f -newermt 2017-11-24! -newermt 2017-11-25 -exec grep -l 1693701622 {} \; ' – CWLiu

+0

具体的なエラーは' xargs 'を介して '-rw-r -r-'を 'grep'に引数として渡すためですもちろん、それは無効なオプション名と見なされます。 'grep'にはダッシュで始まる正規表現を渡す' -e'フラグがありますが、実際には実際のファイル名だけを渡したいだけです。とにかく、Awkの答えはあなたが望むものになります。 – tripleee

答えて

3

あなたはxargsによってピックアップされているファイル名と(先頭のダッシュ付き)行全体を抽出していない若干異なっていると思うし、それが理由ですエラー。

awkを使用してフィルタリングします。一般的に

ls -alrth | awk 'match($6$7$8, /Nov2411:.*/) { print $9 }' | xargs grep -l 1693701622 

、LSの出力を解析するために、良いアイデアではありません:それはそれは優雅に繰り返しスペースを扱うので、grepより良い仕事でしょう。理由についてはthis投稿を参照してください。

ご希望の場合は、findを使用してタイムスタンプに基づいてファイルを取得し、xargs grep ...に渡す方が良い場合があります。

は、この関連記事を参照してください:

関連する問題