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,
-inamebere 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?