Как удалить все файлы с определенным расширением из папки и всех ее подпапок?
Я хочу удалить все файлы.jpg из папки "Музыка", чтобы освободить место. Моя папка "Музыка" содержит подпапки, и я хотел бы знать, есть ли команда для удаления всех файлов.jpg из всех этих папок независимо от их уровня. Спасибо за вашу помощь!
4 ответа
Самый простой способ (если вы используете Ubuntu Desktop):
Перейдите в папку "Музыка" на Nautilus, нажмите Ctrl+F и найдите .jpg,
и затем удали его
Вы также можете изменить местоположение и сделать свой поиск более конкретным.

обновленный
Будьте более конкретны после поиска .jpg Нажав на зеленую кнопку Select File type Picture и затем удалить jpg только из поиска . точка и затем reload как показано на рисунке ниже
Что он делает, он будет искать файл изображения, как
.jpg .png .gifи все остальные файлы, которые находятся вPicture Format

Быстрое и чистое решение для командной строки будет
cd <dir>
find . -type f -iname \*.jpg -delete
.говорит начать поиск в текущей папке.-type fговорит найти только для поиска файлов.-inameделает поиск нечувствительным к регистру.-deleteговорит найти, чтобы удалить / удалить все найденные файлы.
ВНИМАНИЕ! Я рекомендую запустить команду без -delete сначала получить список файлов, которые будут удалены при -delete входит в команду. Таким образом, небольшая опечатка не удалит то, что вы не собирались.
Для получения дополнительной информации о том, как использовать find и что он может увидеть man find
Обратите внимание, что find не будет производить вывод, когда -delete используется.
По поводу комментария на несколько расширений
find . -type f \( -name \*jpg -o -name \*png \) -delete
( .. )Групповое выражение. Необходимо убежать из оболочки, следовательно\( .. \)в примере-oлогично или
Таким образом, приведенный выше пример будет соответствовать любому файлу, который имеет jpg или же png в конце его названия. Другие расширения могут быть добавлены таким же образом. Просто не забудьте запомнить -o между каждым -name заявление, если -o не указано find по умолчанию будет -a (и) который не будет работать, так как файл не может заканчиваться в обоих jpg а также png в то же время.
Это должно сделать это
sudo rm -rf -d ~/Music/*.JPG
который удалит все файлы.JPG в папке Music.
В Bash shopt -s globstar здесь может быть полезно для рекурсивного сглаживания:
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