Também não funciona na versão 5.2.7 (versão mais recente). Eu sugiro tentar unrar x file\*.rar
, observe o ponto antes de rar
. Isso desce um caminho de código ligeiramente diferente, pelo menos em 5.2.7, e funciona em 5.2.7.
Por quê? Bem, depois de alguns minutos olhando a fonte do unrar (dê uma olhada em match.cpp
se você quiser tentar!), Eu posso dizer confortavelmente "porque Alexander Roshal realmente, realmente, reallly deveria ter usado glob(3)
em vez disso ". Por que ele não? Provavelmente porque não está disponível no Windows, onde o AFAIK rar se origina.
Em extensões do Windows são especiais, e parece que o código unrar
o trata como uma espécie de parte não-real do nome do arquivo - um *
simples e final corresponderá a um, mas um *
em o meio não vai. Não tenho certeza se isso é um comportamento esperado no Windows, mas certamente não no Unix.
Solução alternativa
A maneira sã de lidar com o quebrantamento é provavelmente algo como:
for f in file*rar; do
unrar x "$f"
done
Deixe o shell expandir o glob e dar ao unrar um arquivo de cada vez. Apenas espere que nenhum dos seus arquivos tenha *
em seus nomes ...
Eu disse inicialmente que funcionava no 5.2.7, que estava errado: eu perdi a barra invertida enquanto testava…