Snažím se find
vytisknout seznam adresářů, které obsahují jiné soubory než obrázky jpg, ale myslím, že používám -exec
možnost je rozbitá. Moje prostředí je Cygwin Bash.
$ find ! -iname "*.JPG$" -exec dirname
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {}
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {};
find: missing argument to `-exec'
Přijatá odpověď:
-exec
musí být ukončen znakem ;
nebo +
. ;
způsobí, že se příkaz vykoná jednou pro každý nalezený název souboru, zatímco +
způsobí, že příkaz bude proveden jednou pro všechny názvy souborů.
Zde je pracovní příklad:
find ! -iname "*.JPG" -exec dirname {} ;
Některé významné rozdíly oproti vašim pokusům:
- Mezi
{}
musí být mezera a;
- The
;
musí být escapováno, protože se jedná o metaznak shellu. - Jak @muru zdůraznil ve své odpovědi,
-iname
bere globus, nikoli regulární výraz
Zastavit/ukončit proces z příkazového řádku po určité době?
Lze ovladač Nouveau Xorg použít pro vícehlavou pracovní stanici?