"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[Solved]Linux del folder

Captain Kirk 14.05.2014 - 07:44 1926 3
Posts

Captain Kirk

Fanboy von sich selbst
Avatar
Registered: Sep 2002
Location: NCC-1701
Posts: 6959
Moin,

Ich hab nach dem Datentransfer vom alten Synology zum neuen QNAP Nas in so ziemlich jedem Ordner den System(?) Ordner @eaDir. Die würd ich gern löschen, meine (recht kleinen) Linux Kenntnisse reichen hier aber scheinbar nicht aus.

was bisher geschah: :)
find /share/MD0_DATA/ -type d -name @eaDir |xargs rm -rf

Haut irgendwie nicht hin. Wenn ich danach ein find mache find ich immer noch folder...

tia!

edit: mir wurde schon geholfen. wohl etwas zu früh geschossen mit einem thread.
Code:
 find /share/MD0_DATA/ -type d -name "@eaDir" | tr "\n" "\000" | xargs -0 rm -rf
Bearbeitet von Captain Kirk am 14.05.2014, 09:09

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
For the record:
Code:
find /share/MD0_DATA/ -type d -name "@eaDir" -exec rm -r {} \;
würde auch gehen. Imho schöner als die "\n"s rauszureißen :).

Captain Kirk

Fanboy von sich selbst
Avatar
Registered: Sep 2002
Location: NCC-1701
Posts: 6959
das habe ich auch versucht aber das -exec scheint das qnap nicht zu checken

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11902
"-exec" ist POSIX, und wird garantiert von jeder `find`-Implementation unterstuetzt. Vermutlich hast du einen Syntaxfehler eingebaut.

Der "Trick", via `tr` \n durch \0 ersetzen zu lassen, ist unnoetig bzw. sogar falsch. Wenn man wirklich so arbeiten muss (Pfadnamen via `find` an irgendeinen consumer zu pipen, der \0-Bytes als Trennzeichen erwartet - so wie etwa `xargs` mit dem "-0"-Switch) so kann man die "-print0"-Direktive von `find` nutzen:

Code:
$ find . -maxdepth 1 -iname ".bash*" -print0 | xxd
0000000: 2e2f 2e62 6173 685f 6869 7374 6f72 7900  ./.bash_history.
0000010: 2e2f 2e62 6173 685f 6c6f 676f 7574 002e  ./.bash_logout..
0000020: 2f2e 6261 7368 5f70 726f 6669 6c65 002e  /.bash_profile..
0000030: 2f2e 6261 7368 7263 002e 2f2e 6261 7368  /.bashrc../.bash
0000040: 5f61 6c69 6173 6573 00                   _aliases.


Eine bessere Variante als die von -=Willi=- (und die imho optimale Loesungsvariante des Problems mittels `find`) ist uebrigens:
Code:
find /share/MD0_DATA/ -type d -a -name '@eaDir' -prune -exec rm -rf {} +
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz