Lista recursiva de arquivos com nomes que não contêm uma certa string

0

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!

    
por vgXhc 01.02.2013 / 17:20

2 respostas

2

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

    
por Panther 01.02.2013 / 17:35
0

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

    
por Pavel A 01.02.2013 / 17:43