Usando find e aspell juntos

1

Estou tentando verificar a ortografia de todos os arquivos *.md em meu diretório atual, mas o seguinte comando falha:

>> find . -maxdepth 1 -name "*.md" | xargs -I {} aspell check {}
xargs: aspell: exited with status 255; aborting

Estou assumindo que isso ocorre porque aspell requer que stdin interaja com o usuário e, de alguma forma, xargs não o fornece. Eu encontrei um hack no Twitter ,

find . -maxdepth 1 -name "*.md" | xargs -n 1 xterm -e aspell check

mas isso abre um novo xterm a cada vez. Como posso fazer com que meu comando original funcione como se eu fosse executar aspell individualmente nos resultados do meu comando find?

    
por Hooked 25.01.2015 / 18:23

2 respostas

3
  • Você não precisa de xargs , apenas use a opção exec :

    find . -maxdepth 1 -name "*.md" -exec aspell check {} \;
    
  • E caso você, ou qualquer futuro leitor, realmente precise usar xargs - você pode fazer isso gerando um novo shell e pegando a entrada padrão do terminal ( /dev/tty ):

    find . -maxdepth 1 -name "*.sh" | xargs -n1 sh -c 'aspell check "$@" < /dev/tty' aspell
    
por 25.01.2015 / 19:01
1

Você pode usar apenas um loop simples:

for f in *.md; do aspell check "$f"; done
    
por 25.01.2015 / 18:51