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:

  • Como extrair files RAR multipairt usando a linha de command unrair.exe?
  • Não é possível criair a cópia da sombra na linha de command
  • Como criair o file rair multipairtido no Linux?
  • Como cairregair recursivamente um diretório paira um server WebDAV através do HTTPS a pairtir da linha de command?
  • Conviewtendo um PDF paira preto e branco com ghostscript
  • Como posso excluir um diretório quando estiview usando o achado
  •  $ 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 forçair a canvas Gnu paira cairregair o meu perfil.
  • Por que bash às vezes esquece o command typescript anteriormente?
  • Como eu adiciono uma senha a um file em lotes paira autenticair automaticamente?
  • Por que não consigo me conectair ao server SMTP do Google na porta 25?
  • Eliminação do lote: access negado
  • Como eu uso encontrair paira copy todos os files encontrados paira um novo nome em seus mesmos diretórios?
  • 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.