Como mover alguns arquivos para o diretório pai?

13

Eu quero puxar todos os mp3's que acidentalmente foram colocados em uma pasta flac, para a pasta pai.

Não importa a profundidade das pastas, só quero mover os arquivos correspondentes exatamente para um diretório.

Veja como eu seleciono meus arquivos:

find . -path "*/flac/*" -name '*.mp3'

Isso funciona na minha pasta de músicas, mas estou preso aqui. Todas as soluções que encontrei, movem os arquivos para o pai da pasta atual ou exigem alguma estrutura fixa.

Marcel
fonte

Respostas:

24

Experimentar:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

Como funciona

  1. find .

    Inicie um comando find trabalhando no diretório atual.

  2. -path "*/flac/*"

    Selecione apenas arquivos com flaco caminho

  3. -name '*.mp3'

    Selecione apenas arquivos com extensão .mp3.

  4. -execdir mv -t ../ {} +

    Para qualquer arquivo encontrado, execute o mvcomando no diretório em que o arquivo está e mova o arquivo para o diretório pai.

    Além de facilitar essa tarefa específica, a opção -execdirtambém é mais segura do que a -execopção tradicional .

Simplificação

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +
John1024
fonte
1
Agradável! Faz exatamente o que eu quero.
Marcel
É o + uma alternativa para o ritualístico \; ?
rackandboneman
@ Johnn1024 assumindo que não há diretórios aninhados com o mesmo flaccaminho, */flac/flac/x.mp3caso contrário, o x.mp3arquivo subirá dois níveis.
αғsнιη