Chtěl bych vyhledat všechny soubory, jejichž cesty obsahují několik slov (word1
, word2
), bez jakéhokoli konkrétního pořadí mezi nimi.
Příklady shodných souborů jsou:
word1bar/fooword2/myfile
fooword2/word1bar/myfile
fooword2/bar/word1myfile
Jaký příkaz může vyřešit úlohu?
Hádám, že nějaký příkaz jako tento bude fungovat:
find . -regex regexpattern
Děkuji.
Moje řešení s locate
je Zlepšit vyhledávání souborů podle názvů pomocí kanálu locate a grep
Přijatá odpověď:
Je těžké to udělat s jedním vzorem (regex nebo shell), ale od find
může trvat více podmínek, můžeme použít
find . -type f -path "*word1*" -path "*word2*" ...
V regulárním výrazu byste museli zadat všechny různé permutace slov, například .*word1.*word2.*|.*word2.*word1.*
(pouze ERE nebo Perl RE), a to rychle vybuchne, pokud chcete najít více než dvě slova.