Monday 2 October 2017

ubuntu - Recursive ls with conditions


Why can't I use a command like this to find all the pdf files in a directory and subdirectories? How do I do it? (I'm using bash in ubuntu)


ls -R *.pdf

EDIT


How would I then go about deleting all these files?



Answer




Why can't I use a command like this to find all the pdf files in a directory and subdirectories?



The wildcard *.pdf in your command is expanded by bash to all matching files in the current directory, before executing ls.





How do I do it? (I'm using bash in ubuntu)



find is your answer.


find . -name \*.pdf

is recursive listing of pdf files. -iname is case insensitive match, so


find . -iname \*.pdf

lists all .pdf files, including for example foo.PDF


Also, you can use ls for limited number of subfolders, for example


ls *.pdf */*.pdf

to find all pdf files in subfolders (matches to bar/foo.pdf, not to bar/foo/asdf.pdf, and not to foo.PDF).


If you want to remove files found with find, you can use


find . -iname \*.pdf -delete

No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...