!(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 {} +