Pagina 1 di 1

Strano comportamento di find -exec rmdir

Inviato: mar 14 set 2010, 17:18
da anycolouryoulike

Codice: Seleziona tutto

$ mkdir prova
$ cd prova
$ mkdir a
$ find . -mindepth 1 -type d
./a
$ find . -mindepth 1 -type d -exec rmdir {} \;
find: ./a: No such file or directory
$ ls a
ls: cannot access a: No such file or directory
Perché ottengo quell'errore "find: ./a: No such file or directory"?
Essendo in uno script, con set -e mi crea qualche problema.
Non si potrebbe evitare in qualche modo?
Grazie :)

Re: Strano comportamento di find -exec rmdir

Inviato: mar 14 set 2010, 17:35
da masalapianta
da errore perchè una volta eseguito l'rmdir (che cancella 'a'), prova a fare una open() di 'a' (per poi fare fstat64(), fchdir(), getdents64() e compagnia bella), il che ovviamente non è possibile in quanto 'a' non esiste più, quindi la open() fallisce.

Re: Strano comportamento di find -exec rmdir

Inviato: mar 14 set 2010, 17:52
da shark1500
Devi usare l'opzione '-d' nel find.

Codice: Seleziona tutto

       -depth Process  each directory's contents before the directory itself.  The -delete
              action also implies -depth.
Altrimenti succede quello che ti ha spiegato masalapianta.

Re: Strano comportamento di find -exec rmdir

Inviato: mar 14 set 2010, 23:10
da anycolouryoulike
Ah già, in pratica dopo averla cancellata prova a cercarci dentro, non ci avevo pensato.
Vi ringrazio entrambi per l'aiuto! :mille: