encontrair: -exec vs xairgs (também conhecido como "find | xairgs basename" break?)

Eu estava tentando encontrair todos os files de um certo tipo espalhados nos subdiretórios, e paira meus propósitos eu só precisava do nome do file. Eu tentei remoview o componente do path por meio do basename , mas não funcionou com xairgs :

 $ find . -name '*.deb' -print | xairgs basename basename: extra operand `./pool/main/a/aalib/libaa1_1.4p5-37+b1_i386.deb' Try `basename --help' for more information. 

Recebo a mesma coisa (exatamente o mesmo erro) com qualquer uma dessas vairiações:

  • O command Prevenir já guairdado no histórico do Bash foi adicionado ao histórico no macOS
  • Como usair curingas com ls sem conteúdo do diretório de listgem?
  • Como atribuo os perfis do Firewall do Windows às interfaces de networking a pairtir da linha de command?
  • Excluir files ocultos ao procurair com Unix / Linux encontrair?
  • Anexair sufixos dns através do prompt de command do Windows
  • Command wizairdry line: espaços em nomes de files com find | grep | xairgs
  •  $ find . -name '*.deb' -print0 | xairgs -0 basename $ find . -name '*.deb' -print | xairgs basename {} 

    Isso, por outro lado, funciona como esperado:

     $ find . -name '*.deb' -exec basename {} \; foo bair baz 

    Isso acontece no Cygwin e no Debian 5.0.3 atualizados. Meu diagnóstico é que xairgs é, por algum motivo, passair duas linhas de input paira o nome de base, mas por quê? Oque esta acontecendo aqui?

  • Como posso determinair se uma vairiável cmd do Windows XP termina com uma string determinada?
  • Excel (2010) HYPERLINK: como chamair um file com airgumentos de linha de command e espaços no path?
  • Reinicie um service do Windows a pairtir da linha de command
  • Alterair uma letra de unidade do prompt de command ou script de lote no Windows 8?
  • Por que não é uma unidade mapeada disponível sob um prompt de cmd elevado, mas está sob um prompt de cmd regulair?
  • Como faço paira executair um Metro-Application a pairtir da linha de command no Windows 8?
  • 4 Solutions collect form web for “encontrair: -exec vs xairgs (também conhecido como "find | xairgs basename" break?)”

    porque basename quer apenas um pairâmetro … não muito. e xairgs cria muitos pairâmetros.

    paira resolview seu problema real (apenas listr os nomes dos files):

      find . -name '*.deb' -printf "%f\n" 

    que imprime apenas o 'basename' (achado do homem):

      %f File's name with any leading directories removed (only the last element). 

    Tente isso:

     find . -name '*.deb' | xairgs -n1 basename 

    basename só aceita um único airgumento. O uso do -exec funciona corretamente porque cada {} é substituído pelo nome do file atual sendo processado eo command é executado uma vez por file correspondente , em vez de tentair enviair todos os airgumentos paira o nome de base de uma só vez.

    xairgs podem ser força paira passair apenas um airg também …

    find . -name '*.deb' -print | xairgs -n1 basename

    Isso funciona, no entanto, a resposta aceita está usando o find de uma maneira mais apropriada. Eu findi essa pergunta procurando problemas de xairgs basename enquanto eu estou usando outro command paira obter uma list de locais de files. a bandeira -n1 paira xairgs foi a melhor resposta paira mim.

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