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?
- 283 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
õõõõ... a -depth-nek mi az az "1" parametere?
- A hozzászóláshoz be kell jelentkezni
Hogy csak 1 szintet lépjen lefele (magyarul ne menjen be az alkönyvtárakba).
- A hozzászóláshoz be kell jelentkezni
Hát az én manuálom nem említ paramétert a -depth
opciónál. (A -maxdepth
-nél persze igen.)
- A hozzászóláshoz be kell jelentkezni
Ez bsd find, nem linux.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Egyrészt ilyen primkó feladatra nem akarok vesződni egyéb tool-okkal, másrészt egyszerűbb volt még a meglévőt is összetákolni, mint keresgélni és kísérletezni. A dirlist caching megfordult a fejemben, de triggerelni kell a cache build-t, így dobtam.
- A hozzászóláshoz be kell jelentkezni
Pedig az, hogy ideírtad, nem kis vesződség - ennyi idő alatt már egy tool-t be is állíthattál volna :)
Cache build trigger: rakd be cron-ba, nem kell triggerelni. Nem tudom, milyen gyakran változik a könyvtárszerkezet - nálam speciel a wcd óránként csinálja meg.
- A hozzászóláshoz be kell jelentkezni
Helyette mlocate?
- A hozzászóláshoz be kell jelentkezni
A find helyett gyorsabb a Rustban írt fd. Illetve mit te akarsz, arra az fzf való, arra is nézz rá.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
Sőt azon gondolkodom, hogy még Python3-mal is megér egy próbát a történet. Az oroszlánrésze úgyis a Python backendre hárul.
os.listdir(path)
re.search("^ak.*mi$", txt)
- A hozzászóláshoz be kell jelentkezni
Nem próbáltam még ki, de python3-t forkolni ilyen xirxar miatt önmagában luxus asszem, amúgy is a natív primitív megoldásokat szeretem.
- A hozzászóláshoz be kell jelentkezni
find Downloads/ -type d -maxdepth 1 -iname '*san*' -print -quit
$(r) = Downloads/
$(t) = san
- A hozzászóláshoz be kell jelentkezni
tecc
- A hozzászóláshoz be kell jelentkezni
POSIX nem volt feltétel, szóval kb adja. Mondjuk -quit nálam épp nincs, de el tudom képzelni. Köszi.
- A hozzászóláshoz be kell jelentkezni
-quit helyett -exit esetleg?
- A hozzászóláshoz be kell jelentkezni