Sziasztok. Régebben használtam a find parancsot arra, hogy speciális szöveget tartalmazó filet töröljön, úgy, hogy az útvonalon ahol keresem bizonyos mappák váltózóak.
Pl.:
/var/vmail/mx2.valami.hu/lab/Maildir/cur
/var/vmail/mx2.valami.hu/fas/Maildir/new
/var/vmail/mx2.valami.hu/naos/Maildir/cur
Vagyis itt lenne egy * a Maildir előtt, és 3db ? a Maildir után.
Régebben mintha ez nekem működött volna:
find /var/vmail/mx2.valami.hu/*/Maildir/??? -type f -mtime -2 -exec grep -l "direct.ro" {} \; -delete
Most viszont kiírja, hogy no such fil or directory. Az biztos, hogy a *-al és ?-elekkel van gondja, mert ha beillesztem a konkrét útvonalat, akkor megcsinálja.
Változott volna a find command?
Megoldás: Debian alatt nem a bash, hanem a dash az alapértelmezett, ezért a fenti parancsot be kell illeszteni egy bash -c "" közé.
Hozzászólások
find /ittkeress -parameterek -print0|xargs -0 rm
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Ez nem a jelenlegi problémára megoldás, mert a probléma, hogy az útvonalat nem fogadja el, mert zavarja a speciális karakterek.
Szerintem find / --iname "a patterned idézőjelben, hogy a shell ne oldja fel a csillagot meg a kérdőjeleket" ... És ja, a print0 általában jó ötlet.
Az iname-re azt írja, hogy inkább iwholename-et akarhatok, mert van benne / jel. VIszont arra 0 találatot ad ki. De ha konkrét útvonalat adok meg, akkor sem ad ki semmit.
find / -iwholename "/var/vmail/mx2.valami.hu/naos/Maildir/cur" -type f
Nekem működik ez is, ha bepasztálom, meg a *ozás is:
Ez egyébként egy alma:9 konténer (ez volt kéznél).
[root@1175a50f49c4 /]# find -version
find (GNU findutils) 4.8.0
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
[root@1175a50f49c4 /]# bash --version
GNU bash, version 5.1.8(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
A new és cur is könyvtár, amiben vannak a mail fileok, és azokban keresnék tartalmat. Tehát:
/var/vmail/mx2.valami.hu/fas/Maildir/new
/var/vmail/mx2.valami.hu/fas/Maildir/cur
Ezek mind könyvtárak, és benne vannak az emailek. És ezért a példád nekem csak a cur és new könyvtárakat adja meg, nem a benne levő fileokat.
A végén írtad ezt is: find /var/vmail/mx2.valami.hu/*/Maildir/??? -type f -exec grep -l "direct.ro" {} \;
Nah ez nekem abszolút nem megy. Régebben rémlik, hogy ez működött, mondjuk 1-2 éve, de nekem most hibára fut.
Szerintem ez működne:
find /var/vmail/mx2.valami.hu -name Maildir
Update: a -name parancsban működnek a speciális karakterek (*?), idézőjelbe is rakhatod
De így csak könyvtárakat keres ahogy nézem. A benne levő fileokról tudomást sem vesz, így vizsgálni sem tudom azok tartalmát.
Figyu, én most kipróbáltam az eredetit is (nyilván más path-al) és működik a csillag az útvonalban is:
find /home/gejzir/work/*/node_modules -name *.js
...
/home/gejzir/work/xxxmgt/node_modules/big.js
/home/gejzir/work/xxxmgt/node_modules/des.js
/home/gejzir/work/xxxmgt/node_modules/ipaddr.js
/home/gejzir/work/xxxmgt/node_modules/bn.js
/home/gejzir/work/xxxmgt/node_modules/hash.js
...
update: még így is...
find /home/gejzir/work/*/node_modules/*/node_modules -name *.js
Nem értem. Akkor lehet, hogy a debian-ban valami hybrid verzió van most a find-ból?
én úgy emlékeztem, hogy a ?-et, és a *-ot nem a find értelmezi, hanem a bash. így ha nem a bash az interpreter, akkor nem várható, hogy működjön. de ez csak egy tipp
4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.
Azért kell helyette a -name valamelyik alfaja. Bonyább esetben a -regex. Mert a shell globbing egyébként se fog működni, ha sok file van, pláne nem gyorsan.
Óóó bakker nálad a pont kassaiviktor! Ez lesz a baj, mert Debian 12 alatt nem a bash a default, hanem a dash.
Vagyis a megoldás bash -c "" közé rakni a parancsot, és már rendben le is fut. Köszi! :)
dash-ban ugyanúgy mennie kéne, ugyanis ez nem bash specifikus viselkedés, kb V7 UNIX óta minden Bourne-shell specifikus shell így működik.
Amúgy ne "-ek, hanem '-ok közé tedd :-)
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
sh, ash, bash, csh, dash, ksh*, yash, zsh - ezen a szinten a globbing ugyanaz kb mindenkinél.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
1) ha egy parancsban nem takart * és/vagy ? és/vagy [kriksz-kraksz] szerepel, akkor ezeket az általad használt shell fogja helyettesíteni az illeszkedő nevekkel.
2) azaz ha beírod az eredeti find parancsodat és elé írsz egy echo parancsot, akkor látni fogod, hogy igazából milyen parancsot is akarnál futtatni
3) következésképpen más hiba van, hiszen azt írtad, hogy ha fizikailag beírod a neveket, akkor jó.
==> én ebből arra következtetek, hogy
- vagy sima PEBKAC
- vagy abnormális shell
- vagy abnormális shell beállítás (pl. "set -o noglob") - kérhetnék egy "set -o" kimenetet a hibás shellben?
vagy valami olyan körülményt elhallgatsz (akár akaratlanul), ami miatt van ez a hiba.
Amúgy azt a hibaüzenetet nagy eséllyel azért adja a find, mert megkapja a nyavalyás globbing karaktereket - és a *keresési hely nevében* nem fogja neked kiértékelni (míg pl. a -name vagy -iname után megtenné).
Amúgy krozoo meglátása a túl sok fájlnévvel jó meglátás lenne, csak akkor a shell adna hibát (a find indítása nélkül) és nem "no such file .." lenne hanem "arg list too long".
Megtennéd, hogy lefuttatod a parancsot és kopipészttel beraknád azt a 3 sort, ami erre vonatkozik
stílusban? Ugyanis mivel magát a hibaüzenetet is elgépelted, nyilván más is lehet hiba, ami neked nem tűnt fel, de esetleg itt valaki észreveszi.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?