Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place! |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
07-05-2012, 12:38 PM
|
#1
|
LQ Newbie
Registered: Apr 2012
Posts: 11
Rep: 
|
Condition in cp/ls | grep (regex, now I have two problems)
Hello,
I'm not sure where to post this question on the forum, but would like to see if someone could help me. I am still totally noob so I guess it's fitting here.
I have a situation where I have a folder with a bunch of image files. They are all pngs, but I need one copy with the extension and one copy without. The copy with is for HTML and the one without is for SEO friendly URL to tell Flash what to pull in and flash uses the file without. It's not ideal, but it is how it is and firefox loads the extension-less file, but the loading "wheel" at the top of the browser just spins forever when all is loaded.
I feel obligated to tell you, I have already created a script in PHP that does the task I want, but I would much rather find a command that will run in BASH so I can set up a shell and run it with cron and also run it through SSH. I know I can do both with the PHP script, but this problem is eating at me...
Anyway, I need a command (or series of commands) that will find all the extension-less png files that do NOT have a matching file.png in the same directory while ignoring .php, .zip, . & ..
I've found that I can list all extension-less files with
And I can list all .png files with
But how o how can I search with a condition? I tried using () in the command but BASH does not care for it.
Thanks!
|
|
|
07-05-2012, 02:34 PM
|
#2
|
LQ Guru
Registered: May 2005
Location: Atlanta Georgia USA
Distribution: Redhat (RHEL), CentOS, Fedora, CoreOS, Debian, FreeBSD, HP-UX, Solaris, SCO
Posts: 7,831
|
Assuming all the files in the directory with no suffix are as you describe:
Code:
for nosuf in $(ls |grep -v '\.')
do if [ ! -f ${nosuf}.png ]
then echo PNG file for $nosuf does not exist
fi
done
You might even add a test to verify the file without a suffix IS a png file by running the "file" command on it.
Code:
for nosuf in $(ls |grep -v '\.')
do if file -b $nosuf |grep PNG
then if [ ! -f ${nosuf}.png ]
then echo PNG file for $nosuf does not exist
fi
fi
done
Last edited by MensaWater; 07-05-2012 at 02:35 PM.
|
|
|
07-05-2012, 02:39 PM
|
#3
|
LQ Newbie
Registered: Apr 2012
Posts: 11
Original Poster
Rep: 
|
cool. Looks like that will work. Thanks!
|
|
|
07-05-2012, 06:02 PM
|
#4
|
LQ Guru
Registered: Aug 2004
Location: Sydney
Distribution: Rocky 9.x
Posts: 18,440
|
Lateral thinking here; does it really matter if there is already a png file; why not not simplify the code and just create a .png for every extension-less file?
|
|
|
07-05-2012, 06:12 PM
|
#5
|
LQ Newbie
Registered: Apr 2012
Posts: 11
Original Poster
Rep: 
|
That does solve a problem for a lookup, but I also want to list it out so I can read what images do not have that matching counterpart. I was hoping to get a regex I could use in ls |grep or somthing like that in one shot, but it looks like I'll be looping through. But thanks!
|
|
|
07-05-2012, 06:26 PM
|
#6
|
LQ Guru
Registered: Aug 2004
Location: Sydney
Distribution: Rocky 9.x
Posts: 18,440
|
Chill mate; far too many people try to do too much in one line of code; a short script is no big deal, honest 
Not only that, but complex single lines of code are a b*gger to understand/debug; believe me I've seen lots 
|
|
|
07-06-2012, 08:39 AM
|
#7
|
LQ Guru
Registered: May 2005
Location: Atlanta Georgia USA
Distribution: Redhat (RHEL), CentOS, Fedora, CoreOS, Debian, FreeBSD, HP-UX, Solaris, SCO
Posts: 7,831
|
Quote:
Originally Posted by Freddythunder
That does solve a problem for a lookup, but I also want to list it out so I can read what images do not have that matching counterpart. I was hoping to get a regex I could use in ls |grep or somthing like that in one shot, but it looks like I'll be looping through. But thanks!
|
ls |sort
Should put all your files in sort order by name so you'd see something like:
filea
filea.png
fileb
fileb.png
filec
filed
filed.png
filef
fileg
fileh
fileh.png
From such a list you can see that filec, filed, filef and fileg do not have corresponding .png files whereas filea, fileb, filed and fileh do.
|
|
|
All times are GMT -5. The time now is 10:19 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|