Удалить все файлы, кроме некоторых в 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")

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

21
задан djsmiley2k
12.11.2022 10:18 Количество просмотров материала 3231
Распечатать страницу

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 2022-11-13 18:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх