Se eu entendi corretamente, você deseja uma regex que permita usar grep para identificar caminhos. Não tenho certeza do que você está tentando fazer com o regex que você postou. Por que você quer que algo seja repetido? Os caminhos precisam apenas de uma única barra: /etc .
De qualquer forma, se você quiser qualquer tipo de caminho (os caminhos também podem conter caracteres que não sejam palavras como { , [ , ( spaces e novas linhas etc), tente isto:
grep -E '/[^/]+' *txt
_____
| |--------> one or more
|-----------> A character class, '^' in a character class means NOT,
so this class means "anything that is not /".
O -E informa a grep que o padrão que você irá fornecer deve ser interpretado como uma Expressão regular estendida em vez de seu padrão, Basic Regular Expression. EREs suportam + para "um ou mais", o que é necessário para encontrar apenas strings com pelo menos um caractere não-slash após a primeira barra.
Se você quiser encontrar apenas caminhos com mais de um único / , você pode fazer algo como
grep -E '/[^/]+/[^/]+' *txt
Os caminhos também podem terminar com uma barra se, por alguma razão, você quiser manter tais barras finais em uso ( /? significa "encontrar zero ou um / ):
grep -E '/[^/]+/[^/]+/?' *txt
Mais especificamente, o regex que você está usando falha por vários motivos. Em primeiro lugar, como @erewok apontou, você está usando parênteses e um + entre parênteses. Como os colchetes especificam uma classe de caracteres , qualquer item dentro deles é tratado como um dos caracteres a serem encontrados (com a exceção de de ^ , o que faz dela uma classe de caractere negada .
Portanto, [(/\w+)]+ significa encontrar% de(, / , qualquer caractere de palavra ( \w ), + ou ) uma ou mais vezes. Em qualquer caso, \w não é reconhecido por grep , a menos que você use Expressões regulares compatíveis com Perl . Você pode ativá-los em grep com o sinalizador -P . Por exemplo, isso corresponderá a um caminho como /etc :
grep -P '/\w+' *txt
Se você sabe que seus caminhos sempre consistem em caracteres de palavras (por exemplo, az, AZ, 0-9 e _ ), você pode usar uma expressão como a acima, mas como pode nunca tenha certeza, usando algo menos rigoroso, minha melhor sugestão é preferível.