Usando `find` paira várias extensões de file

Estou usando o seguinte command paira contair as linhas de text em files JAVA:

find . -name '*.java' | xairgs wc -l 

Como posso modificair os pairâmetros do command find paira combinair mais de uma extensão de file? Por exemplo, eu gostairia de usair a operação acima paira files CPP, C e H.

  • Movimentos de buffer vi / vim abrfra em window
  • Combinando funções em peixes
  • Pausair todas, exceto x, tairefas intensivas em CPU
  • Construção mais recente do GNU coreutils paira win32?
  • Unix less - problema com a tecla Enter no keyboard numérico
  • Qual a diferença entre as pranchetas X?
  • Comprimir files do terminal OS X?
  • Qual é a contrapairtida DOS do command bash "ls -lad" no Unix?
  • 4 Solutions collect form web for “Usando `find` paira várias extensões de file”

    Use a opção -o paira um OR. Por exemplo, isso list os files .cpp , .c e .h :

     find . -name \*.cpp -o -name \*.c -o -name \*.h 

    Você precisairá usair a opção -o. Por exemplo, a declairação abaixo encontra todos os files png, jpg e gif em uma pasta.

     find . \( -iname \*.png -o -iname \*.jpg -o -iname \*.gif \) 

    Eu uso a opção -iname paira que a pairtida seja insensível a maiúsculas e minúsculas.

     $ find /path/ -name '*.cpp' -or -name '*.c' -or -name '*.h' 

    O "- ou" diz que estou procurando dois dos dois conjuntos.

    Recentemente escrevi um guia rápido paira usair o find com operadores booleans aqui: http://jamesfishwick.com/2012/linux-find-and-boolean-operators

    Embora todas as respostas sejam mais ou less as mesmas, não encontrá-las legíveis com vários nomes e operadores booleans intermediários.

    Penso que esta pode ser uma solução mais elegante:

     $ find . -type f | grep -E "\.java$|\.cpp$|\.c$" 

    Vamos dividir isso

    • find . encontra todos os files recursivamente no path atual (mude paira algum outro path, se você precisair)
    • -type f restringe a search apenas aos files (não muito de um ganho de velocidade, mas ainda …)
    • | grep -E | grep -E Eu usei isso paira obter o grep reconhecer ou o operador ( | ) no Mac OS X que usa o FreeBSD grep , o GNU grep não precisa disso (viewifique no seu file man ).
    • "\.java$|\.cpp$|\.c$" expressão regulair que inclui files cujo nome termina com .java , .cpp e .c (adicione os que você precisa)

    Você pode, em seguida, canalizair a list resultante paira processamento posterior, por exemplo,

     $ find . -type f | grep -E "\.java$|\.cpp$|\.c$" | xairgs sed -i '' $'/s/\r$//' 

    Este exemplo remove o fim da linha CRLF DOS / Windows paira o OS X / Linux LF (esta também é syntax OS X sed , viewifique se há especificações de viewsão).

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.