4 votes

Comment afficher une liste de chemins de fichiers dans une fenêtre du Finder à partir de la sortie de la ligne de commande ?

Existe-t-il un moyen de prendre une liste de chemins de fichiers à partir de find (ou similaire) et de les afficher dans une fenêtre Finder?

Par exemple, disons que je voudrais voir une seule fenêtre Finder contenant "tous les fichiers .mp3 dans le chemin actuel et ses sous-répertoires en excluant le répertoire archive/".

J'aimerais prendre cette sortie:

$ find "$(pwd -P)" -iname "*.mp3 -not -path "./archive/*""
/Users/me/1.mp3
/Users/me/2.mp3
/Users/me/subdir/3.mp3

Et afficher ces fichiers dans une fenêtre Finder comme si je faisais une recherche Finder normale.

Je sais que je peux faire une recherche avancée dans Finder mais pour mes besoins, c'est trop limité.

Merci, Erik

2voto

Meisner Points 421

Que diriez-vous de leur attribuer temporairement à tous une étiquette unique (peut-être en utilisant quelque chose comme tag), puis de créer un dossier intelligent Finder pour cette étiquette?

Voici ce que j'ai fait:

  1. Installer tag avec brew install tag.

  2. Dans Finder, Fichier > Nouveau dossier intelligent.

  3. Cliquez sur "Ce Mac".

  4. Cliquez sur +, et ajoutez "Tags" "Est" temp0. (Cela sera remplacé ultérieurement par une nouvelle étiquette temporaire.)

  5. Cliquez sur Enregistrer, et enregistrez-le sous quelque chose comme /Utilisateurs/votreutilisateur/Bibliothèque/Recherches enregistrées/Etiquette personnalisée.savedSearch.

  6. Créez un script comme celui-ci (avec SMART_FOLDER défini sur le chemin ci-dessus, sans l'extension):

    !/bin/bash

    set -e SMART_FOLDER="/Utilisateurs/votreutilisateur/Bibliothèque/Recherches enregistrées/Etiquette personnalisée" # sans extension

    passer tous les arguments à find, et stocker dans un tableau

    IFS=$'\n' RESULTS=($(find "$@")) unset IFS

    attribuer une étiquette temporaire

    LABEL=temp$(date +%s) tag -a "$LABEL" "${RESULTS[@]}"

    créer une savedSearch temporaire avec la nouvelle étiquette.

    si nous venons de la mettre à jour, Finder ne semble pas le remarquer.

    sed "s/temp0/$LABEL/g" "$SMART_FOLDER.savedSearch" > "$SMART_FOLDER-$LABEL.savedSearch" open "$SMART_FOLDER-$LABEL.savedSearch"

    echo "Affichage des résultats pour $LABEL. Appuyez sur Entrée pour supprimer l'étiquette." read tag -r "$LABEL" "${RESULTS[@]}" rm "$SMART_FOLDER-$LABEL.savedSearch"

  7. Enregistrez-le sous quelque chose comme ffind, quelque part dans votre $PATH par défaut.

  8. Rendez-le exécutable avec chmod u+x ffind.

  9. Maintenant, vous pouvez l'utiliser comme find, par exemple ffind . -name '*.html'. Il passera ses arguments à find, attribuera une étiquette temporaire aux résultats, créera un dossier intelligent temporaire qui trouvera cette étiquette, et l'ouvrira. Ensuite, il attendra que vous appuyiez sur Entrée.

  10. Lorsque vous appuyez sur Entrée, il effacera l'étiquette des fichiers, et supprimera le dossier intelligent temporaire.

1voto

TN. Points 3450

Un court AppleScript fonctionnerait:

tell application "Finder" to reveal {"/Users/me/1.mp3" as POSIX file, "/Users/me/2.mp3" as POSIX file, "/Users/me/3.mp3" as POSIX file}

et vous pouvez l'exécuter directement depuis le terminal avec osascript:

osascript -e 'tell application "Finder" to reveal {"/Users/me/1.mp3" as POSIX file, "/Users/me/2.mp3" as POSIX file, "/Users/me/3.mp3" as POSIX file}'

Je ne suis pas assez compétent en shell pour convertir la sortie de find en la commande ci-dessus (je préférerais utiliser un éditeur de texte pour cela), mais cela devrait être faisable.

0 votes

Merci, @Glorfindel. C'est un bon début, cependant si j'ai un fichier à ~/Desktop/1.mp3 et un fichier à ~/Desktop/subdir/2.mp3, le Finder les révélera dans des onglets séparés. Avec du recul, je n'ai pas été assez clair : j'aimerais que tous les fichiers s'ouvrent dans la même fenêtre du Finder. Peut-être que ce n'est pas possible.

0 votes

Mise à jour de mon post pour clarification.

1 votes

Ah, vous voulez dire qu'il devrait prendre ~/Desktop comme dossier racine et 'étendre' le dossier subdir (et sélectionner les deux fichiers). Je ne suis pas sûr que cela soit possible - j'espère que quelqu'un d'autre a une meilleure solution alors.

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