2 votes

Convertir les noms de fichiers avec barre oblique inversée en répertoires

Pour transférer des données d'un programme sur Windows vers le même programme sur Mac, le programme dispose d'un outil de sauvegarde intégré. Malheureusement, il semble qu'ils n'aient jamais testé la compatibilité multiplateforme, car le fichier ZIP qu'il produit contient des noms de fichiers tels que :

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

Je dois donc convertir ces extensions backslash en leur équivalent pour les dossiers. Il n'y a pas tant de différences que ça, donc je suis content de faire un mv sur eux, puis supprimer le début du mot "folder" - mais c'est là que je suis bloqué.

Suggestions sur la manière de supprimer (par exemple) le Data\Shared ou le faire rapidement en se déplaçant en fonction du nom du fichier serait formidable. Merci de votre compréhension.

4voto

user9517 Points 113163

Quelque chose comme cela devrait vous permettre de changer BASE pour être le chemin de base que vous souhaitez.

#!/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

Je l'ai réalisé sur un système Linux mais je pense qu'il fonctionnera comme prévu sur OSX.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X