2017-11-23 1 views
1

Wie grep ich Dateien, die von einem Befehl ls and grep zurückgegeben werdenWie grep ich den Inhalt von Dateien, die von ls und grep zurückgegeben werden?

z.

# 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 

Ich möchte die oben genannten Dateien für die folgende Zeichenfolge suchen 1693701622

Ich habe versucht, xargs verwenden, aber eine gewisse Unterstützung benötigen.

# 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. 

Hinweis: Möglicher duplizieren here aber ich glaube, ich ist etwas anders

+0

'finden. -Typ f -neermt 2017-11-24! -newermt 2017-11-25 -exec grep -l 1693701622 {} \; ' – CWLiu

+0

Der konkrete Fehler liegt darin, dass Sie' -rw-r -r- 'als Argument für' grep' über 'xargs übergeben 'und natürlich wird das als ungültiger Optionsname angesehen. 'grep' hat ein '-e'-Flag, mit dem Sie einen regulären Ausdruck übergeben können, der mit einem Bindestrich beginnt, aber natürlich möchten Sie in diesem Fall nur die tatsächlichen Dateinamen eingeben. Die Antwort mit Awk endet damit, was du willst. – tripleee

Antwort

3

Sie sind nicht die Dateinamen und die gesamte Zeile (mit den führenden Strichen) Extrahieren von xargs abgeholt wird, und das ist, warum die Error.

Verwenden Sie awk, um die Filterung durchzuführen. Das würde besser funktionieren als grep da sie anmutig wiederholt Räume Griffe:

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

Im Allgemeinen ist es keine gute Idee ist es, die Ausgabe von ls zu analysieren. Siehe this Post für warum.

Für Ihre Anforderung könnte es besser sein, find zu verwenden, um die Dateien basierend auf ihrem Zeitstempel abzurufen und sie dann an xargs grep ... weiterzugeben.

Sehen Sie diese im Zusammenhang Beitrag:

Verwandte Themen