@lagudal

Как правильно удалить рекурсивно все файлы и директории, кроме файлов одного типа?

немного запутался,
ситуация вроде простая, но что то не проходит..
В общем, есть директория, ее путь от корня системы скажем /var/www/site/dir
В директории несколько уровней вложенности. Необходимо очистить все, что находится внутри этой директории, оставив только все файлы с конкретным расширением, пусть в примере это будут .txt файлы.
Т.е. директории, которые не содержат txt файлы, должны удаляться полностью, а в тех, которые содержат - удаляется все кроме txt.
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
find /каталог ! -name \*.txt -type f -delete && find /каталог -type d -empty -delete
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
shambler81
@shambler81 Куратор тега Linux
find -type f /var/www/site/dir- массив файлов, кстати ты не сказал нужно ли удалять каталоги в которых 0 файлов
-exec выполнить команду
grep -v "*\.txt$" | rm -fv {} исключить из массива все что на текст в конце , ну и удалить
собственно одна строчка дальше уже сам придуаешьшь
Если не осилишь пиши
Ответ написан
Комментировать
smorman
@smorman
When In Rome do as The Romans do...
В МАНе мало вменяемых способов, увы...

Можно так, например - указать расширения, которые нужно удалить

rm *.jpg *.gif

не указывая .txt

А лучше, как парни выше написали через find
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы