Fórum Root.cz
Hlavní témata => Software => Téma založeno: PAvel2 25. 08. 2015, 18:20:04
-
Ahoj,
potreboval bych pomoct s prikazem find.
Mam soubory file100 az file340
potrebuji findem najit soubory file110 - file300
Bohuzel prikaz jako find . -name file{110..300} nefunguje...
-
To už začala škola že sa tu objavujú úlohy z využitia find, priamo alebo v pytónovi?
-
man find:
-name pattern
True if the last component of the pathname being examined matches pattern. Special shell pattern matching characters
(``['', ``]'', ``*'', and ``?'') may be used as part of pattern.
o x..y se tam nic nepíše.
-
Něco jako
find $dest -name "file???" -exec bash -c '[x={}; ${x:4} -ge 100 ] && [ ${x:4} -le 300 ]'
ale asi to nebude uplně efektivní.
-
man find:
-name pattern
True if the last component of the pathname being examined matches pattern. Special shell pattern matching characters
(``['', ``]'', ``*'', and ``?'') may be used as part of pattern.
o x..y se tam nic nepíše.
To proto, že {x..y} je shellová věc.
$ echo {10..20}
10 11 12 13 14 15 16 17 18 19 20
-
To proto, že {x..y} je shellová věc.
No jasně - a proto to nefunguje. Ještě přesněji je to bashová věc, klasický "sh" to taky neumí:
$ /bin/sh
$ echo {10..20}
{10..20}
-
V jiné situaci ale tahle expanze udělá co má. Můj první nápad co zkusit by asi byl podobný jako u tazatele: hodit findu explicitně povolené varianty souborů.
A s označením bashismus bych byl opatrný - klasický "sh" neumí skoro nic. Tohle je ale něco, co zvládají i jiné shelly než jen Bash. Namátkou ZSH a KSH. Proto jsem konkrétní shell neuvedl.
-
V jiné situaci ale tahle expanze udělá co má. Můj první nápad co zkusit by asi byl podobný jako u tazatele: hodit findu explicitně povolené varianty souborů.
Já jsem se jenom snažil říct, že tazatel si musí uvědomit, jaké parametry jakému programu předává. Buď chce použít find, a pak musí použít jenom ty konstrukce, které find podporuje, nebo chce použít shellovou expanzi, a pak find nepotřebuje/nechce.
Prostě buď "rm {100...300}" nebo "find ... -name ... něco něco", ale ne kombinace těchto dvou věcí, ta nefunguje.