How to delete all the files with a certain extension from a folder and all of its subfolders? [duplicate]
Solution 1:
A quick and clean solution for the command line would be
cd <dir>
find . -type f -iname \*.jpg -delete
-
.
tells to start searching in the current folder. -
-type f
tells find only to look for files. -
-iname
makes the search case insensitive. -
-delete
tells find to delete/remove all files found.
CAUTION! I recommend running the command without -delete
first to get a list of the files that will be removed when -delete
is included in the command. This way a small typo won't delete anything you didn't intend to.
For more information on how to use find
and what it can do see man find
Note that find
will not produce any output when -delete
is used.
Regarding the comment on multiple extensions
find . -type f \( -name \*jpg -o -name \*png \) -delete
-
( .. )
Group expression. Needs to be escaped from the shell, hence\( .. \)
in the example -
-o
logical or
So the above example will match any file which has either jpg
or png
at the end of it's name. More extensions can be added in the same way. Just make sure to remember -o
between every -name
statement, if -o
is not specified find
will default to -a
(and) which won't work since a file can't end in both jpg
and png
at the same time.
Solution 2:
The easiest way (if you are using Ubuntu Desktop):
Go to your Music folder in Nautilus, press Ctrl+F and search for .jpg
.
& then delete it
You can also change the location and you can make your search more specific.
Updated
Be More specific after searching .jpg
Clicking on green button Select File type Picture
& then remove jpg
from search only .
dot & then reload
as shown in pic below
What it does it will search Picture file like
.jpg .png .gif
& all other file which are inPicture Format
Solution 3:
This should do it
sudo rm -rf -d ~/Music/*.JPG
which will remove all .JPG files within the Music folder.
Solution 4:
Bash's shopt -s globstar
can be useful here for recursive globbing:
bash-4.3$ tree
.
├── 10.jpg
└── subfolder
├── 5.jpg
└── another_subfolder
└── 15.jpg
2 directories, 3 files
bash-4.3$ shopt -s globstar
bash-4.3$ rm ./**/*.jpg
bash-4.3$ tree
.
└── subfolder
└── another_subfolder