Por exemplo, eu tenho um diretório:
/A/B/C/D/E/F/G.txt
Não sabendo a priori /E/F/G.txt
, preciso isolar essa parte. Para facilitar o exemplo:
echo '/A/B/C/D/E/F/G.txt' | grep -o '/A/B/C/D'
Mostra:
/A/B/C/D
Mas eu quero:
/E/F/G.txt
Com:
echo '/A/B/C/D/E/F/G.txt' | grep -o -v '/A/B/C/D'
Eu não recebo a saída desejada (a saída não está lá).
Como posso obter a saída desejada usando grep
, ou seja, não mostrando a parte da linha que está nos termos de pesquisa de grep
?
Com expressões PCRE, você pode especificar um padrão, mas excluí-lo da correspondência usando
\K
:No entanto, se isso for realmente para arquivos e diretórios, sugiro usar
find
:Ou se você realmente quer a barra inicial:
Da documentação : _
find
Usar
realpath
:(precisa
-m
se isso não for um arquivo real.)Resultado: