2 votes

Trier les fichiers par feuille de calcul

J'ai un dossier qui contient plus de 1000 fichiers texte. Les fichiers texte sont censés être organisés en dossiers.

J'ai une feuille de calcul qui indique quel fichier texte va dans quel dossier :

enter image description here

Existe-t-il un moyen de faire en sorte que le "Finder" réponde à cette feuille de calcul, afin qu'il place le bon fichier dans le bon dossier ? Peut-être quelque chose impliquant Applescript ou le terminal ? C'est juste une simple feuille de calcul "Apple Numbers", de sorte que je puisse copier et coller les données dans quelque chose d'autre.

4voto

nohillside Points 82672

Ce qui suit suppose que ni les noms de fichiers ni les noms de dossiers ne contiennent de virgules ( , ) et que le fichier CSV exporté utilise , comme séparateur.

Les petites erreurs pouvant entraîner des résultats inattendus et la perte de données, il est recommandé de faire d'abord une sauvegarde.

  • Supprimez toutes les colonnes supplémentaires, les lignes d'en-tête et les lignes vides à la fin de votre tableau (de sorte qu'il ne contienne que deux colonnes avec le nom du fichier et le nom du dossier respectivement).

  • Exportez les données dans un fichier CSV nommé files.csv dans le dossier contenant les fichiers texte

  • Terminal ouvert

  • cd into/the/folder

  • Exécuter perl -pi -e 's/\r\n/\n/;' files.csv pour convertir le CSV de la terminaison de ligne de type DOS au style standard Unix.

  • Copiez/collez ce qui suit (code de test, ne créera/déplace rien)

    while IFS=, read file folder; do
        # if the folder doesn't exist yet -> create it
        [[ -d "$folder" ]] || echo mkdir "$folder"
        # if file exists -> move it
        if [[ -r "$file" ]]; then
            echo mv "$file" "$folder"/
        else
            echo "Uups, $file not found"
        fi
    done < files.csv
  • Si la sortie semble correcte (en particulier si aucune sortie "Uups, xxx not found" n'est affichée, ni aucun autre message d'erreur), exécutez

    while IFS=, read file folder; do
        [[ -d "$folder" ]] || mkdir "$folder"
        if [[ -r "$file" ]]; then
            mv "$file" "$folder"/
        else
            echo "Uups, $file not found"
        fi
    done < files.csv

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X