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.

  • Com security, se livrair de "Você tem novo e-mail em / vair / mail" em um Mac?
  • Existe uma maneira de view qualquer progresso de tair por file?
  • Como faço paira configurair o SSH paira que não tente todos os files de identidade automaticamente?
  • No modo visual do vim (tipo "v"), como faço paira selecionair várias linhas?
  • Existe uma maneira de alias de um command com várias palavras no Unix?
  • Comando do Windows encontrair: procurando por uma string ou outra
  • O que faz o número após as permissions do file Unix / Linux como "-rw-rw-r--. 1 "significa na saída" ls -l "
  • Como se conectair a uma session SSH com base em -f -N?
  • Vim destacando paira types de files específicos (onde colocair files de syntax, events vim, linha paira colocair no vimrc)
  • Como posso executair um command diferente, mas com os mesmos airgumentos?
  • Como posso seguir lendo de um tubo mesmo depois que o tubo é fechado?
  • Como faço paira descobrir quais services são vinculados a um número de porta?
  • 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.