Ls followed by grep


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Ls followed by grep
# 1  
Old 12-18-2019
Ls followed by grep

Hi,
On AIX 7.1
I run the following:

ls -lrt | grep "Dec 18 14"

Code:
-rw-r--r--    1 user1 dba            1015 Dec 18 14:00 l21088100.req

-rw-r--r--    1 user1 dba            2491 Dec 18 14:01 l21088103.req

-rw-r--r--    1 user1 dba            1294 Dec 18 14:01 l21088102.req

-rw-r--r--    1 user1 dba            2471 Dec 18 14:01 l21088104.req

-rw-r--r--    1 user1 dba            2461 Dec 18 14:01 l21088105.req

-rw-r--r--    1 user1 dba            2467 Dec 18 14:02 l21088106.req

-rw-r--r--    1 user1 dba            5847 Dec 18 14:03 l21088107.req

-rw-r--r--    1 user1 dba           11400 Dec 18 14:03 l21088108.req

-rw-r--r--    1 user1 dba            1763 Dec 18 14:03 l21088101.req

-rw-r--r--    1 user1 dba            3033 Dec 18 14:05 l21088109.req

-rw-r--r--    1 user1 dba             401 Dec 18 14:07 FNDOPP297976.txt

-rw-r--r--    1 user1 dba             401 Dec 18 14:07 FNDOPP297975.txt

-rw-r--r--    1 user1 dba             401 Dec 18 14:07 FNDOPP297974.txt

-rw-r--r--    1 user1 dba             401 Dec 18 14:07 FNDOPP297973.txt

-rw-r--r--    1 user1 dba            1786 Dec 18 14:07 l21088111.req

-rw-r--r--    1 user1 dba            1015 Dec 18 14:07 l21088110.req

-rw-r--r--    1 user1 dba           11650 Dec 18 14:07 FNDOPP297977.txt

-rw-r--r--    1 user1 dba            1032 Dec 18 14:08 l21088112.req

-rw-r--r--    1 user1 dba            1015 Dec 18 14:10 l21088113.req

-rw-r--r--    1 user1 dba            2489 Dec 18 14:10 l21088116.req

-rw-r--r--    1 user1 dba            1294 Dec 18 14:10 l21088115.req

-rw-r--r--    1 user1 dba            2471 Dec 18 14:10 l21088117.req

-rw-r--r--    1 user1 dba            2461 Dec 18 14:11 l21088118.req

-rw-r--r--    1 user1 dba            2466 Dec 18 14:11 l21088119.req

-rw-r--r--    1 user1 dba            5754 Dec 18 14:11 l21088120.req

-rw-r--r--    1 user1 dba           12837 Dec 18 14:12 l21088121.req



How can I complete my ls commande to look for a word in all of these files?

like:

ls -l -exec grep myword {} \;



Thanks.
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 12-18-2019 at 01:06 PM.. Reason: code tags, please!
# 2  
Old 12-18-2019
look into xargs
# 3  
Old 12-18-2019
Quick and dirty - do not use with file names with space or other special characters!
Code:
ls -lrt | grep " Dec 18 14:" | awk '{ print $NF }'

This gives the file names. You can use xargs to convert stdin to command arguments
Code:
ls -lrt | grep " Dec 18 14:" | awk '{ print $NF }' | xargs grep myword

In the last grep use -l or -h option to only print file names or contents.
This User Gave Thanks to MadeInGermany For This Post:
# 4  
Old 12-19-2019
You might be better to crete two temporary reference files with the correct timestamp.

What criteria do you have for the search date(s)? If it is just today's files, then you could do something like:
Code:
my_ref_file="$(mktemp)"
touch -mt $(date '+%Y%m%d0000' "${my_ref_file}"                                    # Sets the file timestamp to the start of today
find . -type f -newer "${my_ref_file}" -exec grep "myword" {} /dev/null \;         # Search for files newer than the reference file modification time (set above)
rm "${my_ref_file}"                                                                # Just to be tidy

This will create you a marker file based on the current date, setting it to midnight (the 0000 at the end of the date command) Using that, you can find any files that are newer and search for them. For each file found, it then runs the grep with {} representing the file just found. The reason to add /dev/null to the end is so that grep sees two files and therefore prints the file names where it finds your string.

Does this help? You may need to add in a -maxdepth flag to suit your needs if there are subdirectories.


If you have a date range to collect files from or a particular day to search, you can create two reference files to mark the start and end of the range. You would then add a ! -newer "${second_ref_file}" to stop it finding anything that is too new.

Of course, this could be modified to set specific times by replacing the 0000 with a required time coding when touching a reference file if that is required, e.g. you just want a particular hour.



I hope that this is useful,
Robin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inconsistent `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l`

i have this line of code that looks for the same file if it is currently running and returns the count. `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l` basically it is assigned to a variable ISRUNNING=`ps -eaf -o args | grep -i sfs_pcard_load_file.ksh |... (6 Replies)
Discussion started by: wtolentino
6 Replies

2. UNIX for Dummies Questions & Answers

Piping grep into awk, read the next line using grep

Hi, I have a number of files containing the information below. """"" Fundallinfo 6.3950 14.9715 14.0482 """"" I would like to grep for Fundallinfo and use it to read the next line? I ideally would like to read the three numbers that follow in the next line and... (2 Replies)
Discussion started by: Paul Moghadam
2 Replies

3. UNIX for Dummies Questions & Answers

Bash - CLI - grep - Passing result to grep through pipe

Hello. I want to get all modules which are loaded and which name are exactly 2 characters long and not more than 2 characters and begin with "nv" lsmod | (e)grep '^nv???????????? I want to get all modules which are loaded and which name begin with "nv" and are 2 to 7 characters long ... (1 Reply)
Discussion started by: jcdole
1 Replies

4. Shell Programming and Scripting

AWK/GREP: grep only lines starting with integer

I have an input file 12.4 1.72849432773174e+01 -7.74784188610632e+01 12.5 9.59432114416327e-01 -7.87018212757537e+01 15.6 5.20139995965960e-01 -5.61612429666624e+01 29.3 3.76696387248366e+00 -7.42896194101892e+01 32.1 1.86899877018077e+01 -7.56508762501408e+01 35 6.98857157014640e+00... (2 Replies)
Discussion started by: chrisjorg
2 Replies

5. UNIX for Dummies Questions & Answers

Advanced grep'in... grep for data next to static element.

I have a directory I need to grep which consists of numbered sub directories. The sub directory names change daily. A file resides in this main directory that shows which sub directories are FULL backups or INCREMENTAL backups. My goal is to grep the directory for the word "full" and then... (2 Replies)
Discussion started by: SysAdm2
2 Replies

6. UNIX for Dummies Questions & Answers

Difference between grep, egrep & grep -i

Hi All, Please i need to know the difference between grep, egrep & grep -i when used to serach through a file. My platform is SunOS 5.9 & i'm using the korn shell. Regards, - divroro12 - (2 Replies)
Discussion started by: divroro12
2 Replies

7. Shell Programming and Scripting

grep for certain files using a file as input to grep and then move

Hi All, I need to grep few files which has words like the below in the file name , which i want to put it in a file and and grep for the files which contain these names and move it to a new directory , full file name -C20091210.1000-20091210.1100_SMGBSC3:1000... (2 Replies)
Discussion started by: anita07
2 Replies

8. UNIX for Dummies Questions & Answers

| help | unix | grep (GNU grep) 2.5.1 | advanced regex syntax

Hello, I'm working on unix with grep (GNU grep) 2.5.1. I'm going through some of the newer regex syntax using Regular Expression Reference - Advanced Syntax a guide. ls -aLl /bin | grep "\(x\)" Which works, just highlights 'x' where ever, when ever. I'm trying to to get (?:) to work but... (4 Replies)
Discussion started by: MykC
4 Replies

9. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

10. Shell Programming and Scripting

MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else

Hi Guys, I need to set the value of $7 to zero in case $7 is NULL. I've tried the below command but doesn't work. Any ideas. thanks guys. MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else { print $7}}' ` Harby. (4 Replies)
Discussion started by: hariza
4 Replies
Login or Register to Ask a Question