Конечно, в некоторых случаях вы проверяли, что у вас есть бесполезный тип файла в нескольких папках, который занимает мало места, но вы просто не хотите, чтобы он был на вашем компьютере. Например, в macOS создаются некоторые файлы. .DS_Store которые сохраняют информацию о значке папки, ее размере и положении, а в Windows существуют аналогичные файлы desktop.ini. Что нам делать, если у нас есть каталог, полный подкаталогов, и мы хотим удалить те или иные типы файлов? Что нам нужно сделать, это рекурсивно стереть Каждый из них.
Это то, что мы можем делать со всеми типами файлов. Например, если у нас есть жесткий диск с музыкой, у нас есть плеер, который загрузил обложки, и мы не хотим, чтобы они сохранялись, мы можем использовать ту же команду, которую мы подробно рассмотрим ниже, чтобы удалить их. Конечно, учитывая, что мы собираемся рекурсивно удалять файлы каталогов и их подкаталоги с помощью терминала, и что они будут потеряны навсегда, не повредит быть осторожным и / или провести тест перед удалением всего, что мы хотим удалить.
Рекурсивно удалять файлы определенного типа с терминала
Команды для примеров файлов macOS .DS_Store будут следующими:
cd ruta/a/directorio find . -name '*.DS_Store' -type f -delete
Из предыдущих команд первая поместит нас в папку, с которой мы хотим начать, то есть ту, которая содержит все файлы .DS_Store, которые мы хотим удалить. Второй - тот, который удалит все файлы .DS_Store из первая папка и ее подпапки или каталоги. Если мы хотим удалить фотографии из ранее упомянутых музыкальных папок, мы должны поместить тип расширения в кавычки, например «* .jpg».
Честно говоря, это то, что я сделаю в тот день, когда перестану использовать Cantata в качестве музыкального проигрывателя по умолчанию. Кантата создает и скрывает информационные файлы с тем же именем, что и песни, у которых есть точка и низкая полоса впереди (например, ._Song). Когда мне это понадобится, мне нужно будет использовать следующую команду: найти. -name '._ *' -type f -delete.
Помогло ли это небольшое руководство вам рекурсивно удалять файлы с терминала?
2 комментариев, оставьте свой
Спасибо, но в вашем коде есть ошибка. Вам необходимо использовать регулярное выражение «*», то есть «* .DS_STORE». Рекомендую исправить. Что ж, для тех, кто мало знает bash, код, который вы дали, не подойдет. Привет!
Привет, Себастьян. Готово. Спасибо за замечание.
Приветствие.