Как удалить все файлы с определенным расширением из папки и всех ее подпапок?
Я хочу удалить все файлы.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