Converte os nomes dos arquivos slash em diretórios

2

Para mover alguns dados de um programa no Windows para o mesmo programa no Mac, o programa possui uma ferramenta de backup incorporada. Infelizmente, parece que eles nunca testaram compatibilidade entre plataformas, já que o arquivo ZIP que ele produz tem nomes de arquivos como:

Data\Shared\filename.extension
Data\Users\Ashley\filename.extension
etc etc

Então, eu preciso converter essas extensões de barra invertida em suas pastas equivalentes. Não há muitas diferenças, por isso estou feliz em fazer um comando mv nelas e depois remover a "pasta" inicial - mas é aí que estou preso.

Sugestões sobre como remover (por exemplo) o Data\Shared ou fazê-lo rapidamente movendo com base no nome do arquivo seria ótimo. Obrigado

    
por Ashley 14.02.2012 / 10:40

1 resposta

4

Algo parecido com isso deve fazer você mudar BASE para ser o caminho base que você deseja.

#!/bin/bash
BASE="/tmp"
for file in *
do
    nf=$(echo "$file" | sed 's|\|/|g')
    filename=$(basename "$nf")
    path=$(dirname "$nf")
    mkdir -p "$BASE/$path"
    cp "$file" "$BASE/$path/$filename"
done

Eu inventei isso em um sistema Linux, mas espero que funcione como esperado no OSX.

    
por 14.02.2012 / 11:26