Существует некая директория /var/recs содержащая 76763 файлов и 29400 вложенных директорий чей уровень вложенности не превышает -maxdepth 1 . Так же, существует список «нужных файлов» (тех, что должны существовать в этой директории) из mysql содержащий 54721 basename (не содержащих путь к файлу) имён. Предо мной встала задача периодически удалять все файлы кроме тех, что есть в списке «нужных файлов».
Пока для себя вижу простой путь: искать все файлы с помощью find , брать bash-скриптом basename и банально перебором искать его в списке «нужных файлов»: При нахождении — переходить к следующему, в противном случае — удалять. Опционально, удалять пустые директории. Собственно вопрос: может есть более правильный и/или быстрый способ это делать? Ну, например, привести списки к единому виду, отсортировать, с помощью comm сравнить и удалить лишнее. Может вообще не на bash делать? В общем, буду рад любым идеям 🙂
Отслеживать
67.8k 210 210 золотых знаков 76 76 серебряных знаков 219 219 бронзовых знаков
как удалить с диска c всё ненужное кроме windows
задан 7 сен 2018 в 6:52
569 2 2 серебряных знака 13 13 бронзовых знаков
Я бы вместо баша взял питон, вместо списка множество, а в остальном так и делал бы
7 сен 2018 в 8:28
Белый список это очень устаревшая идея. Можно придумать две директории white и tmp . Белый не трогаем, а временную чистим. Искать по списку это лишняя работа. Удачи .
Источник: ru.stackoverflow.com
как удалить все кроме windows
Ответ от Александр Щукин[гуру]
Нажимайте: Пуск — Панель управления — Установка/удаление программ (Программы и компненты) — удаляйте всё, что там есть.
Ответ от MuzzZoN RullEzzZ[гуру]
Форматируешь диски кроме диска где винда стоит. Потом в панели управления удаляешь проги на диске где винда стоит. Потом заходишь в реестр и удаляешь все записи удаленных программ. и у тебя на компе остается только винда. Долго? Тогда форматируй всё нах и установи винду заново, так легче
Ответ от Gintama[гуру]
Переустанови систему!
Ответ от Маринка Табанская[гуру]
если у вас семерка, то мой компьютер — >удалить или изменить программу (в самом верху написано) ->и удаляешь ненужные тебе программы>
Ответ от Jan A.[гуру]
.. смотрите меню мышки ( правая клавиша ) . )
Ответ от Вадим[гуру]
Нажимаешь на пуск потом панель управления потом установка и удаление программ и удаляй только смотри программные файлы не удали а то потом переустановка драйверов потребуеться.
Ответ от Денис мещеряков[активный]
тебе не надо говорить «виндус переустанови и все» однако тебе надо прогу с кнопочкой «удалить весь хлам чтобы комп не тормозил». нет таких прог. воспользуйся советом простого чувака
Ответ от Мансур Каримов[гуру]
Такая программа выпущена . Называется CCleaner Network Edition. В ней есть опции по удалению и лечению программ. Скачать ее можешь здесь Удачи.
Ответ от Дмитрий Суворов[новичек]
ybrfr
Ответ от ххх ххх[новичек]
выкини комп и купи новый))
Ответ от Wladimir xxx[новичек]
мне тоже нужна кнопочка удалить все в хлам ..рестартнуть виндовс без дисков нета и другой херни
Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Как можно удалить все программы кроме windows.
Источник: 22oa.ru
Как удалить все файлы в каталоге, кроме одного
Иногда вам нужно удалить почти все файлы из каталога, но вы хотите сохранить один или несколько из них. Когда их много, идти по одному — утомительное занятие. Это не лучший вариант, есть способы значительно упростить работу в Linux и можно сразу избавиться от всех, что вам нужно.
Например, вы можете удалить только те, которые начинаются с определенного имени, или те, которые имеют определенное расширение, и так далее. Все что возможноФактически, в других случаях я уже показывал аналогичные уроки в LxA. Здесь вы можете шаг за шагом и простым способом следовать руководству, чтобы удалить все нужные файлы, кроме тех, которые вы хотите сохранить.
И самое лучшее то, что вам не нужно будет устанавливать какую-либо программу, это легко сделать с помощью таких команд, как rm и find. То есть программы, которые уже предустановлены в любом дистрибутиве Linux. И, конечно же, метод будет основан на поиске шаблонов и использовании этих совпадений для удаления только того, что вы хотите.
Ну чтобы там исключить несколько альтернатив, Кто они такие…
- 1 Удалить файлы из каталога с помощью rm
- 2 Удалить файлы из каталога с помощью find
- 3 Удалите файлы из каталога с помощью переменной GLOBIGNORE
Удалить файлы из каталога с помощью rm
Ну, чтобы использовать команда rm Чтобы избавиться от того, что вы чувствуете, вы должны знать перед некоторыми способами выявления закономерностей:
к активировать extglob Чтобы использовать их, вы должны сначала выполнить следующую команду:
shopt -s extglob
глаз! Я не указываю это, но предполагается, что у вас есть разрешения на выполнение этих операций и что вы находитесь внутри этого каталога, когда выполняете команду rm. Будьте осторожны с этим, потому что, если вы запустите его по другому пути, вы можете удалить файлы, которые вам не нужны. То есть перед выполнением этих команд убедитесь, что вы вошли в нужный каталог с помощью cd.
Теперь вы можете использовать rm, чтобы удалить все, что захотите. Например, удалить все файлы из каталога, кроме тех, которые соответствуют имени «Lxa»:
rm -v !(«lxa»)
Вы также можете указать два или более имен, которые вы не хотите удалять. Например, чтобы избежать удаления lxa и desdelinux:
rm -v !(«lxa»|»desdelinux»)
Вы можете удалить все файлы, минус те, с расширением .mp3. Например:
rm -v !(*.mp3)
В конце вы можете вернуться к отключить extglob:
shopt -u extglob
Удалить файлы из каталога с помощью find
Другая альтернатива rm — используйте find, чтобы удалить то, что вам нравится. Вы можете использовать канал и xargs с rm или использовать параметр -delete для поиска. То есть общий синтаксис будет таким:
find /directory/ -type f -not -name ‘PATRÓN’ -delete find /directory/ -type f -not -name ‘PATRÓN’ -print0 | xargs -0 -I <> rm [opciones] <>
Например, представьте, что вы хотите удалить все файлы из каталога, кроме файлов с расширением .jpg, вы можете использовать одну из этих двух команд, поскольку обе они дают одинаковый результат:
find . -type f -not -name ‘*.jpg’-delete find . -type f -not -name ‘*.jpg’ -print0 | xargs -0 -I <> rm -v <>
find . -type f -not (-name ‘*pdf’ -or -name ‘*odt’ ) -delete
Конечно, вы можете сделать то же самое с | и xargs, как в предыдущем примере. Кстати, мы использовали -не отрицать, но вы можете удалить это, чтобы сделать его положительным, то есть удалить совпадающие шаблоны, а не исключать их.
Удалите файлы из каталога с помощью переменной GLOBIGNORE
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Любители Linux » GNU / Linux » Системное администрирование » Как удалить все файлы в каталоге, кроме одного
Источник: www.linuxadictos.com