Eu acho que será mais simples e rápido usar apenas GLOBIGNORE
(supondo que seu shell seja bash mesmo assim):
GLOBIGNORE
A colon-separated list of patterns defining the set of filenames
to be ignored by pathname expansion. If a filename matched by a
pathname expansion pattern also matches one of the patterns in
GLOBIGNORE, it is removed from the list of matches.
Assim, você pode ler os padrões desejados em seu arquivo, adicionar um *
para torná-los globs e convertê-los em uma lista separada por dois pontos:
GLOBIGNORE=$(sqlite3 database.sqlite3 'select images from cars_car;' |
sed 's/|/*:/g; s/$/*/')
Então, você pode apenas rm
all e resetar GLOBIGNORE (ou apenas fechar o terminal atual):
rm * && GLOBIGNORE=""
Porque GLOBIGNORE
será agora assim:
$ echo $GLOBIGNORE
5e1adcf7c9c1bcf8842c24f3bacbf169*:5e2497180424aa0d5a61c42162b03fef*
Todos os arquivos correspondentes a esses globs não serão incluídos na expansão de *
. Isso tem o benefício adicional de trabalhar com qualquer tipo de nome de arquivo, incluindo aqueles com espaços, novas linhas ou outros caracteres estranhos.