O shell interpreta a linha de comando com certas regras que você deve considerar aqui:
-
Você pode escapar de metacaracteres de shell com \ para que se comporte como um caractere comum.
-
Você pode usar aspas simples ou duplas e, dentro dessas (com aspas duplas) ou todas (com aspas simples), os metacaracteres do shell perdem seu significado especial.
-
As cotações não precisam estar em limites de palavras, de forma que
rm th"is fil"e
seria o mesmo querm "this file"
. -
Os caracteres []? * podem ser usados para expansão de nome de arquivo. Eles não podem ser citados ou escaparam para este propósito.
Assim, as soluções possíveis para o seu caso são rm -rf '('*
, rm -rf "("*
e rm -rf \(*
. Eu não sei porque o último não funcionou no seu caso. Talvez haja algum espaço em branco na frente dos parênteses?
Com a seguinte linha, você poderá ver se há algum caractere engraçado em seus nomes de arquivo:
for i in *; do od -c <<< "$i"; done