GNU/Linux >> Znalost Linux >  >> Linux

Vynechat rozšíření s Find?

Potřebuji vytvořit miniatury z více souborů .png a chtěl bych to udělat pomocí ImageMagicks convert užitečnost. K rekurzivnímu nalezení všech souborů, které samy nejsou miniaturami, používám následující volání (rozdělené na dva řádky, aby byly čitelné):

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

To by ale samozřejmě vytvořilo soubor s názvem a.png.thumb.png při spuštění v souboru s názvem a.png . Jak mohu odstranit .png rozšíření z druhého {} parametr předaný ke konverzi?

Přijatá odpověď:

Nejjednodušší způsob, jak toho dosáhnout, je předat {} do shellu jako sh a nechat to udělat shell:

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

Linux
  1. Jak najít soubory s určitou podcestou?

  2. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  3. Najít soubory a rozbalit je (s mezerami)

  1. Nahradit find za fd v Linuxu

  2. Jak najít všechny soubory s konkrétním nadřazeným adresářem v linuxu?

  3. Rekurzivně vyhledejte soubory s konkrétní příponou

  1. Jak najít soubory pomocí příkazu fd v Linuxu

  2. Linux odstranit soubor s velikostí 0

  3. najít soubory s nastavenými seznamy ACL