Как удалить все файлы / папки из папки, за исключением нескольких папок?

Это следующие шаги:

Щелкните правой кнопкой мыши значок файла → Свойства → Открыть с → Установить по умолчанию → Закрыть.

1
задан 28 October 2015 в 21:06

3 ответа

Этот способ - это немного больше работы, чем некоторые другие возможные решения, но когда я удаляю файлы, мне нравится проверять, что уходит навсегда. В приведенных ниже шагах вы можете увидеть «приложение» в вашей PWD, как указано в вашем вопросе.

Сначала создайте новый текстовый файл, содержащий имена каждой папки, которую вы хотите сохранить (не удалять), с помощью одного папка на строку. Сохраните его как to-keep.txt, например:

config
logs

Затем скопируйте следующее в текстовый редактор и сохраните его как rm-exclude.sh, чтобы все три файла находились в одном каталоге.

[ f2]

Сделайте его исполняемым с помощью:

chmod +x rm-exclude.sh

Затем запустите его со следующим, где PATH - это путь к папке «приложение» из вашего PWD , В вашем примере PATH будет просто application.

./rm-exclude.sh PATH

Наконец, отметьте to-delete.txt, чтобы убедиться, что ничего не удалено, чего не должно быть, и запустите:

readarray -t dels < to-delete.txt; for del in "${dels[@]}"; do rm -rf "$del"; done

Если вам не нужно проверять содержимое файла txt, вы можете просто скопировать и вставить указанную выше команду в конец rm-exclude.sh, так что запуск скрипта делает все до тех пор, пока вы to-keep.txt уже заполнены. Конечным результатом должно быть то, что каждая прямая вложенная папка application не в to-keep.txt будет удалена вместе с их содержимым.

1
ответ дан 24 May 2018 в 04:51

На основании ответа Jos я использую это, чтобы удалить все файлы и каталоги только в текущем каталоге, кроме каталога .git.

sudo find /home/jeffy/django_files/djauth_lifecycle_tutorial/part_04/ -maxdepth 1 -mindepth 1 -not -name .git -exec rm -rf {} \;

Я на самом деле испугался и подумал, что это удалит каталог .git, но я просто забыл использовать флаг a с la (ls -la).

Флаг mindepth должен избегать удаление самого корневого каталога. [F8] предотвращает возврат всех подкаталогов и файлов, которые являются избыточными с флагом f.

(Кроме того, никогда не используйте относительные пути при использовании rm -r!)

1
ответ дан 24 May 2018 в 04:51

Что я буду делать с моей оболочкой (zsh) следующим образом (но я думаю, что с bash ther является чем-то эквивалентным).

Тип
echo application/*(/) 

и, не нажимая на возврат, нажмите TAB.

Тип
echo application/*(/) 

Тип

Я тройную проверку и редактирование начального echo до rm -rf. Я снова проверяю и ... ... ударяю назад.

Теперь я отредактирую строку, чтобы удалить каталоги, которые я хочу сохранить.

0
ответ дан 24 May 2018 в 04:51

Другие вопросы по тегам:

Похожие вопросы: