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 / computer / Perguntas / 1425394
Accepted
D S
D S
Asked: 2019-04-15 10:53:38 +0800 CST2019-04-15 10:53:38 +0800 CST 2019-04-15 10:53:38 +0800 CST

Mover arquivos de subdiretórios para uma nova pasta recursivamente (todos os arquivos [jpg/png/...] exceto jsons)

  • 772

Eu tenho uma pasta do Google Fotos. Isto é de um takeout de fotos do Google. A maneira como a entrega funciona é que existem várias pastas com nomes de datas

➜  ~/Google Photos => tree |head -n 20     
.
├── 1979-12-31
│   ├── icon-24x24.png
│   ├── icon-24x24.png.json
│   ├── icon_local_color.png
│   ├── icon_local_color.png.json
│   ├── metadata.json
│   ├── viewer-14.png
│   ├── viewer-14.png.json
│   ├── viewer-28.png
│   └── viewer-28.png.json
├── 2001-07-24
│   ├── heic0109a.jpg
│   ├── heic0109a.jpg.json
│   └── metadata.json
├── 2003-01-06
│   ├── ASPdotNET_logo.jpg
│   ├── ASPdotNET_logo.jpg.json
│   ├── darkBlue_GRAD.jpg
│   ├── darkBlue_GRAD.jpg.json

Gostaria de mover todos os arquivos que não terminam em json para uma nova pasta chamada ./all_photos. O problema é que posso ter dois arquivos com o mesmo nome em pastas.

Por exemplo na pasta 1979-12-31posso ter um arquivo chamado a.jpge na pasta 2001-07-24também posso ter outro arquivo chamado a.jpg. As soluções que examinei movem os arquivos, mas substituem ou ignoram se houver uma possível substituição. Gostaria de alterar os nomes dos arquivos conforme mostrado: 1979-12-31_a.jpge 2001-07-24_a.jpg. Isso garantirá que não haja arquivos com o mesmo nome e, portanto, nenhuma substituição.

Estou em um servidor Linux e imagino que a melhor maneira de fazer isso seria por meio do comando find do Linux, mas não tenho certeza dos comandos exatos, então gostaria de uma ajuda.

linux command-line find
  • 1 1 respostas
  • 310 Views

1 respostas

  • Voted
  1. Best Answer
    D S
    2019-04-16T04:41:39+08:002019-04-16T04:41:39+08:00

    Um script que escrevi para resolver o problema. Provavelmente não é a maneira mais eficiente, mas se houver uma maneira mais eficiente, informe-me. Leva um parâmetro - o nome da pasta para a qual você gostaria de aplicar o script. No exemplo acima, eu executaria ./script.sh Google\ Photos. Funciona para 2 níveis de subpastas.

    #!/bin/bash
    shopt -s extglob
    for x in `ls $1` 
    do
        for y in $1/$x/!(*.json)
        do
            a=${y#"$1/$x/"}
            mv $y "$1/$x-$a"
        done
    done
    
    • 0

relate perguntas

  • Qual seria o equivalente em lote do argumento "pass" do Python?

  • Não é possível ativar o Microsoft Print to PDF depois de desativado

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

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

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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