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

Как использовать "progress-bar.sh" для отображения хода выполнения операций, выполняемых на удаленных серверах
Как Grep до определенного символа или строки
Использование Windows Git Bash в MobaXterm
Домашняя папка MSYS2: показать ~
Как соединить файлы в командной строке без создания временных файлов?
Cygwin bash sed блокирует мои файлы
grep файл и передать выходные данные в sed и сохранить выходные данные sed в файле
Что мне нужно сделать, чтобы смонтировать USB-накопитель в ArchLinux
Я добавил новый путь в список путей, но не смог выполнить программу из любого места linux
iTerm2 не уважаешь мои клавиши...иногда
Scripting: что проще всего извлечь значение в теге XML-файла?
ошибка sed при запуске терминала в OS X
Bash: отображение каждого размера подкаталога в формате списка с помощью команды 1 строка?
Как получить pid запущенного процесса с помощью одной команды, которая анализирует выходные данные ps?
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