GNU/Linux >> Tutoriels Linux >  >> Linux

Omettre l'extension avec Find ?

J'ai besoin de créer des vignettes à partir de plusieurs fichiers .png et j'aimerais le faire en utilisant ImageMagicks convert utilitaire. Pour trouver de manière récursive tous les fichiers qui ne sont pas eux-mêmes des vignettes, j'utilise l'appel suivant (scindé en deux lignes pour le rendre lisible) :

find . -type f -name "*.png" -not -name "*thumb.png*" 
  -exec convert {} -thumbnail 200x200 {}.thumb.png ;`

Mais cela créerait bien sûr un fichier nommé a.png.thumb.png lors de son exécution sur un fichier appelé a.png . Comment puis-je supprimer le .png extension à partir du deuxième {} paramètre passé à convertir ?

Réponse acceptée :

La façon la plus simple de le faire est de passer le {} vers un shell comme sh et que le shell le fasse :

find ... 
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} ;

Linux
  1. Comment auditer les autorisations avec la commande find

  2. Comment trouver des fichiers avec un certain sous-chemin ?

  3. Comment rechercher des fichiers avec la commande fd sous Linux

  4. Fichier de suppression Linux de taille 0

  5. trouver des fichiers avec des listes de contrôle d'accès définies

Comment trouver des applications installées avec une taille installée sous Linux

Trouver des informations sur le matériel du système Linux avec Hwinfo

Retrouver les fichiers perdus avec Scalpel

Comment supprimer des fichiers avec une extension spécifique sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Tutoriel sur la commande de recherche Linux (avec exemples)