AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1484860
Accepted
Mandroid
Mandroid
Asked: 2023-09-06 15:50:11 +0800 CST2023-09-06 15:50:11 +0800 CST 2023-09-06 15:50:11 +0800 CST

Comando mv: movendo apenas determinados arquivos de extensão, sem ter uma string em seu nome

  • 772

Estou tentando incorporar o comando 'mv' em um dockerfile.

Quero mover apenas os arquivos com determinada extensão, mas sem uma string no nome.

Suponha que o diretório src tenha abc.txt, abcu.txt, def.xml, 1abc2.txt, mno.txt, pqr.txt e eu queira mover apenas arquivos .txt e não tenha 'abc' em seu nome. Portanto, apenas mno.txt e pqr.txt devem ser movidos.

Qual seria a melhor maneira de fazer isso?

command-line
  • 1 1 respostas
  • 237 Views

1 respostas

  • Voted
  1. Best Answer
    Raffa
    2023-09-06T17:15:05+08:002023-09-06T17:15:05+08:00

    Com globbing de shell estendido:

    $ ls *.txt
    1abc2.txt  abc.txt  abcu.txt  mno.txt  pqr.txt
    $
    # Enable extended shell globbing
    $ shopt -s extglob
    $
    # "echo" is for a dry-run
    $ echo mv -nv -t /path/to/dest -- !(*abc*).txt
    mv -nv -t /path/to/dest -- mno.txt pqr.txt
    $
    # Disable extended shell globbing
    $ shopt -u extglob
    

    Com find:

    $ find ! -name "*abc*" -name "*.txt" -exec echo mv -nv -t /path/to/dest -- {} +
    mv -nv -t /path/to/dest -- ./mno.txt ./pqr.txt
    

    Avisos :

    1. echoé adicionado na frente mvdos dois exemplos acima para um teste seguro ... Você precisa removê-lo quando estiver satisfeito com a saída para que a movimentação real aconteça.
    2. A -topção mvespecifica o diretório de destino/destino e espera um argumento depois dele na forma de um caminho como -t /path/to/dest.
    3. Se você precisar especificar o caminho para o diretório de origem que contém os arquivos no primeiro exemplo, então ele precisa estar depois --e diretamente antes do padrão glob como mv -nv -t /path/to/dest -- /path/to/source/!(*abc*).txt… Enquanto no segundo exemplo, isso pode ser feito assim find /path/to/source/ ! -name "*abc*" -name "*.txt" -exec echo mv -nv -t /path/to/dest -- {} +.
    4. O primeiro exemplo com shell globbing após o mvcomando está sujeito ao comprimento/tamanho máximo de argumentos do sistema permitido para um comando e embora deva ser bastante grande no Ubuntu (da última vez que verifiquei, era em torno de 2 MB ), mas você precisa saber disso de qualquer maneira… O segundo exemplo com find, entretanto, não é afetado por esta restrição.
    • 6

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve