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

Командная строка Bash перезаписывает текущую строку
Как изменить / добавить трекер.торрент-файл с помощью командной строки?
cat wc - l подсчет строк строки с определенными окончаниями строк (e.G для Mac OS X)
Лучший способ извлечь подстроку в bash
Windows 10 Bash команда не работает, несмотря на включение режима разработчика и включение " Подсистема Windows для Linux"
Как я могу заставить команду scp перезаписать папку назначения
Как настроить задание Jenkins на определенный сервер для развертывания?
номер команды bash (#) эквивалентен в zsh
Однострочная команда для перемещения с сохранением той же структуры папок
Ошибка шпатлевки: операция / bin / bash не разрешена при подключении к Cygwin sshd
Как сделать резервную копию недавно измененных файлов в Bash?
В чем разница между set, env, declare и export при установке переменной в оболочке Linux?
Удалить пустые колонки из CSV файл с bash-скрипт
Как я могу получить путь монтирования USB-устройства на OSX?
Как изменить приглашение bash?

Удалить все файлы, кроме некоторых в bash, без CD в каталог?

мне нужно сделать ежедневную очистку в каталоге загрузки.

Я видел этот вопрос и проверил ответ

rm !("test 1"|"test 4")

он отлично работает, но требует иметь компакт-диск в каталог раньше. Поскольку мое приложение должно быть двумя директориями выше во многих частях, я бы хотел не делать что-то вроде

cd /app/download
rm !("test 1"|"test 4")
cd ../..

Я пробовал

rm !("./app/download/test 1"|"./app/download/test 4")

но хорошо, это удалить содержимое каталога выше, не скачать/

5
задан djsmiley2k
источник

1 ответов

Вы были почти там:

shopt -s extglob   # ← Only needed if you haven't enabled it yet
rm ./app/download/!("test 1"|"test 4")

на !(…) будет расширен с полным путем ко всем файлам, кроме тех, которые находятся в !(…). Так как вы префикс аргументы rm путь ./app/download/, никакие другие файлы выше этого каталога не будут удалены.

2
отвечен slhck 2013-09-19 08:24:31
источник

Другие вопросы bash linux rm script