Classifique os arquivos em subpastas de acordo com o nome [script]

1

Eu tenho vários arquivos que foram recuperados de um backup, mas têm a estrutura (local do arquivo) como o nome do arquivo.

por exemplo:

C\Users\Welcome\Desktop\Doc1.docx
F\New folder\concerts04M002.WAV

Eu quero fazer um script que pegue esses nomes um por um e crie as respectivas pastas e coloque o arquivo dentro da pasta.

por exemplo: F \ Nova pasta \ concertos \ 0904M002.WAV

- > Faça uma pasta "F" no diretório atual, em seguida, cd para F fazer uma pasta "Nova pasta" da mesma forma fazer "shows" (ou diretamente fazer mkdir F \ New folder \ concerts)

- > renomeie o arquivo "F \ New folder \ concerts \ 0904M002.WAV" para "0904M002.WAV" e mova-o para a pasta recém-criada "F \ New folder \ concerts \"

Alguém pode me ajudar com o roteiro? Obrigado

    
por Ashwin Kumar k 13.10.2016 / 09:38

1 resposta

3

Use o seguinte script bash.

#!/bin/bash
for file in *\*
do 
    destFile="${file//\/\/}"
    destFolder="${destFile%/*}"
    [ -d "$destFolder" ] || mkdir -p "$destFolder"
    mv -v "$file" "$destFile"
done

O código basicamente substitui todo o \ no arquivo de origem por / para obter o caminho do arquivo de destino. Em seguida, ele obtém o diretório de destino do arquivo e o cria usando mkdir -p . Finalmente, o arquivo é copiado para a pasta de destino.

Escreva o código em um arquivo (digamos, script.sh ) e, em seguida, no terminal do

% bl0ck_qu0te%     
por Nizar Malangadan 13.10.2016 / 11:00