copia arquivos para outra pasta - localize

0

Eu tenho que copiar arquivos para pasta com nome com o tipo usando o comando 'find'. Existem muitos arquivos com muitas pastas. Eu tentei o comando:

find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \;

Mas eu não sei como posso usar o mkdir para criar pasta, quando eu uso "|".

Eu penso em dois comandos. Primeiro, faça as pastas do tipo de arquivos. Segundo copiar arquivos para esta pasta.

Mas como posso criar essas pastas.

    
por diego9403 22.08.2015 / 07:29

1 resposta

0

Usando sua expressão de corte de arquivo para determinar o nome do diretório:

find . -type f -exec bash -c 'd="../$(file -b "$1"|cut -d " " -f 1)"; mkdir -p "$d"; cp "$1" "$d" ' none {} \;

Como funciona

  • d=../$(file -b "$1"|cut -d " " -f 1)

    Isto encontra o nome do diretório correspondente ao tipo do arquivo. Eu adicionei ../ para colocá-los sob o diretório pai. Você pode querer colocá-los em outro lugar.

  • mkdir -p "$d"

    Isso cria o diretório, se ainda não existir.

  • cp "$1" "$d"

    Isto copia o arquivo para o diretório.

por 22.08.2015 / 22:30

Tags