Help with selective ls


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with selective ls
# 1  
Old 04-02-2012
Help with selective ls

Hi all

Smilie

Can anyone advise how do I use ls to do a selective amd sorted listing of file that I want to have as below?

Am looking for files that are named as log_<nnnn>.txt, where <nnnn> are numeric, i.e. I want to have a listing sorted from the newest to the oldest of files that starts with log_ and with a .txt extension and the characters in between these two can only be numeric, example log_1.txt, log_234.txt, log_222.txt etc.

I want to exclude files like log_9ab.txt, log_a9b.txt., log_99a.txt

I thought I can get away with doing
Code:
ls -1tr log_[0-9][0-9]*.xml

but unfortunately the * list also files like log_99a.txt.

I want to be able to only list files where the characters in between log_ and .txt are numeric, unfortunately, sometimes, there can be 2, 3 or 5 numeric characters.

Any advise will be much appreciated. Thanks in advance.

Last edited by Scrutinizer; 04-02-2012 at 03:28 AM.. Reason: code tags
# 2  
Old 04-02-2012
ls -1tr log_[0-9][0-9]* works as expected on my RHEL GNU-Bash.

An alternative, try this:
Code:
ls -1tr | grep 'log_[0-9][0-9]*.txt'

# 3  
Old 04-02-2012
Try:
Code:
ls -1tr log_[0-9].xml  log_[0-9][0-9].xml  log_[0-9][0-9][0-9].xml  log_[0-9][0-9][0-9][0-9].xml  log_[0-9][0-9][0-9][0-9][0-9].xml 2>/dev/null

Less exact, but you might get away with:
Code:
ls -1tr log_*[0-9].xml

# 4  
Old 04-02-2012
Try:
Code:
ls | egrep 'log_[0-9]+\.xml'

This User Gave Thanks to yazu For This Post:
# 5  
Old 04-02-2012
Code:
ls log_+([0-9]).txt

(ksh on RHEL 5.4)
# 6  
Old 04-02-2012
ksh93-style extended globbing also works in recent versions of bash after issuing:
Code:
shopt -s extglob


Last edited by Scrutinizer; 04-02-2012 at 12:47 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 04-03-2012
Thanks. That one works so far on :Linux. Hope the same thing works on Solaris.

---------- Post updated at 06:27 AM ---------- Previous update was at 06:18 AM ----------

Thanks to everyone who responded.

So far, yazu's suggestion is what am trialing out.

Code:
ls | egrep 'log_[0-9]+\.xml'

Also found the link below useful, in case egrep does not function like it used to on other *nixes or on others where egrep is not available.

https://www.unix.com/shell-programmin...ric-value.html

FYI, my other chosen alternative which is using awk if egrep is not available is as below. Any awk expert around to make it "shorter"

Code:
ls -1tr *.xml | awk -F. '{ print $1 }' | awk -F_ '{ print $2 }' | awk '/^[0-9]+$/' | awk '{ print "log_"$1".xml" }'

or for .txt files

ls -1tr *.txt | awk -F. '{ print $1 }' | awk -F_ '{ print $2 }' | awk '/^[0-9]+$/' | awk '{ print "log_"$1".xml" }'

Thanks again everyone. Very much appreciated.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Selective running

I have MegaCli64 -PDList -aALL | grep -E 'Enclosure Device ID|Slot Number' Enclosure Device ID: 252 Slot Number: 0 Enclosure Device ID: 252 Slot Number: 1 Enclosure Device ID: 252 Slot Number: 2 Enclosure Device ID: 252 Slot Number: 3 I need to run the following command on all slots... (4 Replies)
Discussion started by: anil510
4 Replies

2. Shell Programming and Scripting

Selective printing

I have the following contents in a file ---- CRITICAL: altered for /usr/bin/bin1 ---- OK: /usr/sbin/bin2 result fine ---- OK: /usr/sbin/bin3 result fine ---- CRITICAL: altered for /usr/bin/bin4 ---- OK: /usr/bin/bin5 result fine ---- OK: /usr/bin/bin6 result fine ---- CRITICAL: altered for... (9 Replies)
Discussion started by: anil510
9 Replies

3. UNIX for Dummies Questions & Answers

Selective replace

i have a large sequence of format sat_1_g3_g_0_8540 . A 1 15501 . . . ID=sat_1_g3_g_0_8540;parentName=sat_1_g3_g_0_8540;Al=sat_1_g2_g_0_8540; sat_1_g3_g_2_8510 . C 1 25501 . . . ... (11 Replies)
Discussion started by: siya@
11 Replies

4. Shell Programming and Scripting

Selective grouping

I have a text file in this format. Group: AAA Notes: IP : 11.11.11.11 #User xxxxxxxxx #Password aaaaaaaaaaaaaaaa Group: AAA Notes: IP : 11.11.11.22 #User yyyyyyyyyyyyy #Password bbbbbbbbbbbbb (8 Replies)
Discussion started by: anil510
8 Replies

5. Shell Programming and Scripting

Selective grep

I have to grep out only email address from a column. It has characters appended and prepended F=<sss1@domain.com> <sss2@domain.com> (sss3@domain.com) <sss4@domain.com> Whatever added before and after email, I should be able to grep out only emails. (9 Replies)
Discussion started by: anil510
9 Replies

6. UNIX for Dummies Questions & Answers

selective grep

Hello, I have been using the command below for file manipulation. while read A B; do grep $f1; done < f2 > f3 So, if a certain string is found in f2 (for ex; DOG243435) and it is also present in f1, then print that string plus the contents of the line in which it was found onto f3. ... (6 Replies)
Discussion started by: verse123
6 Replies

7. Shell Programming and Scripting

selective printing

hi all from below text "abcd,SYS_12345,xyz,PQR, ," I want to print only "abcd,SYS,xyz,PQR, ," i.e. taking only first three 3 chars from 2 string of comma separated file thanks (4 Replies)
Discussion started by: JoeColeEPL9
4 Replies

8. IP Networking

selective masquerading

I am running Linux 2.6.20 on i686 architecture. I want to be able to masquerade different hosts on my LAN to different external interfaces. Specifically, I want one specific host to masquerade through a vpn tunnel while the other hosts simply masquerade over the regular ISP interface. I only... (4 Replies)
Discussion started by: NESter
4 Replies

9. UNIX for Advanced & Expert Users

Selective Umask

Hi, We have umask 022 in /etc/profile for security reasons. But I want have some other umask for selected users. how to achieve this? Regards (3 Replies)
Discussion started by: baanprog
3 Replies

10. Shell Programming and Scripting

echo is selective?

i tried to ask about this earlier, but didn't explain well enough. From a script, i issue the following: echo `pgp --encrypt filename --recipient public-key` The result is perfect. The encrypted file is in the directory just as if i'd issued the pgp command from the command line. However,... (0 Replies)
Discussion started by: rgard
0 Replies
Login or Register to Ask a Question