Как в Linux удалить все файлы в каталоге, которые НЕ начинаются с префикса (например, sessions_ *)?
Используя Bash:
shopt -s extglob
rm !(sess_*)
Я предпочитаю найти:
find ./ -type f \( \! -name 'sess_*' \) -exec rm {} \;
Вы можете настроить глубину, чтобы избежать рекурсии.
В приведенном выше
cd / tmp; ls -1 | grep -v sessions_ | xargs rm -f
grep должен быть grep -v '^ sess_ *'
Другие мудрые файлы, такие как ppp_sess_333, остались бы позади.
Одно из решений - передать его через grep. Например:
cd /tmp ; ls -1 | grep -v sess_ | xargs rm -f
Другой вариант - найти (сюда также не входят каталоги):
find /tmp ! -name sess_\* ! -type d -exec rm -f {} \;