1 votes

Utiliser Find, Execdir et Grep en une seule commande

J'essaie d'utiliser un shell script pour :

  • renvoie tous les fichiers .mov dans un répertoire donné
  • sans chemin d'accès, uniquement les noms de fichiers
  • filtrage des fichiers dot-underscore dans les résultats
  • séparer chaque résultat par \n mais nous n'avons pas encore abordé cette partie.

Je ne sais pas pourquoi il y a des fichiers avec des points de soulignement, mais c'est un serveur partagé et je ne voulais pas les supprimer au cas où. Il y a aussi des espaces dans le chemin, donc séparer les résultats par des espaces donne des résultats intéressants.

Jusqu'à présent, j'ai trouvé comment faire ces choses, mais pas en tandem. Cette commande renvoie tous les résultats, pas les fichiers avec des points de soulignement, mais elle ne renvoie que le chemin d'accès complet, je n'arrive pas à faire en sorte qu'elle renvoie le nom de base :

results="$(find /Path/ -iname "*.mov" -type f | grep -vF '/._')"

Cette commande ne renvoie que les noms de base, mais inclut les fichiers dot-underscore.

results="$(find /Path/ -iname "*.mov" -execdir echo {} ';' | grep -vF '/._')"

Comme vous pouvez le voir dans la deuxième tentative, j'ai essayé de lier les deux ensemble... mais d'une manière ou d'une autre -execdir fait que la commande ignore la commande grep à la fin. Je suis sûr qu'il y a quelque chose qui ne va pas, mais merci de me le faire savoir.

1voto

nohillside Points 82672

Vous pouvez utiliser find pour ignorer les fichiers non désirés, il n'est pas nécessaire de grep par la suite :

find PATH \( -name '._*' -prune \) -o -type f -iname '*.mov' -execdir echo {} \;

Pour créer un fichier texte avec le résultat, ajoutez > path/to/text-file à la fin.

PS : La raison pour laquelle votre deuxième commande ne fonctionne pas réside dans le modèle utilisé pour la commande grep . Vous supprimez le nom du chemin d'accès dans le champ find Ainsi grep -v '^\._' doit être utilisé à la place.

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