find grep head felgyorsítása

Fórumok

Van 1 kis makróm, aminek a lényegi része:

dest=$(find ${r} -depth 1 -type d -print |grep -i ${t}|head -1)

Adok neki 2 paramétert, hogy hol mit keressen. Ez úgy 5mp alatt fut most, ezt kéne felgyorsítani. Egyszer már kitaláltam, de az elveszett/ottmaradt valahol.

Arra használom, h gyorsan tudjak navigálni a kacatjaim között, szótöredék alapján is oda tudjon találni.
Ötlet?

Hozzászólások

dest=$( cd "${r}" ; printf '%s\n' .*/ */ | grep -m 1 -i "${t}" )

1. kihasználjuk, hogy a printf belső parancs (tehát olcsóbb, mint a find)

2) meg azt is, hogy a */ csak könyvtárra illeszkedik

3) sajnos a grep -m abszolút nem POSIX, szóval ha valóban UNIX (és nem Linux), akkor azt a felét most nem tudnám belső paranccsal kiváltani

4) ellenben mindenképp eltér a tiedtől azért, mert ez mindig előbb listázza a rejtett könyvtárakat és csak utána a nem rejtetteket, a te keresésed pedig abban a sorrendben adja ki őket, ahogyan fizikailag a readdir(3) visszaadja, Valamint ez uyge ABC-rendben listáz, azaz ha több találat van, akkor nem biztos, hogy ugyanaz lesz a találat. Amúgy pontosan e miatt az extra rendezés miatt, el tudom képzelni, hogy extrém nagy könyvtárnál (vagy extrém lassú háttértárnál) ez a megspórolt processzel együtt is lassabb.

De nem nagyon tudom, hogy lehetne ezt gyorsítani.

Ez most OSX konkrétan, de tudja a grep a -m -t, szóval jó lehet, (max linuxra megyek vissza, legacy unix nem valószinű, ha meg igen, majd kitalálok mást) amúgy a grep-re tippeltem volna, hogy az a lassú. De a -m jó tipp. lehet a head-t meg tudom spórolni az eredeti find-es megoldásban is. majd este szutykolok vele, Köszi.

õõõõ... a -depth-nek mi az az "1" parametere? 

Nem lenne praktikusabb pl. a WCD (vagy hasonló eszköz)?

Vagy esetleg a könyvtárlistát cache-elni? Ha más nem, szövegfájlba a find kimenetét, majd csak azt grep-pelni.

A find helyett gyorsabb a Rustban írt fd. Illetve mit te akarsz, arra az fzf való, arra is nézz rá.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Szerkesztve: 2021. 04. 05., h – 17:48
find Downloads/ -type d -maxdepth 1 -iname '*san*' -print -quit

$(r) = Downloads/
$(t) = san