Depende do que você quer na saída.
ls -R | grep -v test
Ou
find foo -type f | grep -v test
Você pode formatar a saída com ferramentas como perl ou awk
Eu tenho: um diretório com muitos subdiretórios e arquivos aninhados.
Eu gostaria de: uma lista de todos os arquivos cujo nome não contenha uma determinada string.
Exemplo de estrutura de arquivos:
foo/
foo/bar/foobar.txt
foo/foo/foobartest.txt
foo/foobartest.txt
Se eu inserir minha consulta com a string "test", ela deve retornar apenas /foo/bar/foobar.txt
Suponho que alguém usaria find
com alguma regex?
Muito obrigado pela sua ajuda!
Depende do que você quer na saída.
ls -R | grep -v test
Ou
find foo -type f | grep -v test
Você pode formatar a saída com ferramentas como perl ou awk
Se você deseja obter
% bl0ck_qu0te%você tem que ir com algo assim:
find foo/ -type f -exec bash -c "basename {} | grep -v 'test' > /dev/null && echo {}" \;
Isso corresponderá apenas ao nome do arquivo, mas exibirá um caminho relativo, como normalmente seria o caso do find.
Pode ser que alguém possa propor uma solução mais elegante?
Se a correspondência com o caminho relativo estiver correta, você pode ir com a resposta, fornecida por @ bodhi.zazen :
find foo -type f | grep -v test