!(UsageRequest.csv)
é um operador ksh
globbing, ele só funciona com ksh
(também com zsh -o kshglob
ou bash -O extglob
, mas esses shells não vêm por padrão no Solaris).
Então você precisa executar esses comandos em ksh
. Observe que o /bin/sh
do Solaris 11 agora é baseado em ksh93, portanto, ele funcionaria lá, mas você ainda não deve usar essas extensões não padrão em sh
scripts lá.
No Solaris 10 e versões anteriores, /bin/sh
é um shell Bourne. O sh
padrão deve ser encontrado em outro lugar em /usr/xpg4/bin/sh
. Esse sh
é baseado em ksh88
. Novamente, !(x)
trabalharia lá, mas não deveria ser usado lá.
Então, use:
#! /usr/bin/ksh -
rm -- !(UsageRequest.csv)
Ou:
#! /usr/xpg4/bin/sh -
ksh -c 'rm -- !(UsageRequest.csv)'
Os globos POSIX (ou Bourne) não possuem operadores de negação. Você precisaria fazer coisas complicadas como:
set -- *
for i do
[ UsageRequest.csv = "$i" ] || set -- "$@" "$i"
shift
done
rm -- "$@"
Ou você pode usar find
:
find . ! -name . -prune ! -name '.*' ! -name 'UsageRequest.csv' \
-exec rm -f {} +