linux-l: Filelöschproblem
JSC
schlegel at tfh-berlin.de
Do Okt 7 18:38:53 CEST 1999
On Thu, Oct 07, 1999 at 05:24:02PM +0200, HEINECKE Johannes CNET/DSM/LAN wrote:
> Hallo allerseits,
>
> bei uns ist ein seltsames Problem aufgetreten. Durch einen
> Skriptfehler haben wir ein relativ-langen Pfadnamen
> ( ~username/cc/cc/cc/cc/cc...,
> wobei cc viel länger ist und auch mit ? und * durchsetzt ist.
> jetzt wollten wir es löschen
> aber rm -rf cc gibt einen Fehler `file name too long'
> wenn man mit cd bis ans Ende steigt und rm * macht (die Files dadrin
> sind kurz, deren Namen auch) gibt's den gleichen Fehler.
> bash, csh, tcsh alle wollen nicht löschen. Kennt jemand das
> Problem, und eine Lösung?
>
ja, auf unserem fileserver gefunden. damals half folgendes script:
ACHTUNG: das script ist nicht ausgereift. ich habe es lediglich
etwas kommentiert, um nicht evtl. die funktionalitaet zu beeintraechtigen.
fehlerausgaben gehoeren zu funktionalitaet - ignorieren !
cat endless_path_rm # ;-)
----------------------------------------------------------------------
#!/bin/bash
cd $1
pwd # zur visuellen kontrolle
a=`ls -a|grep -v "\."|grep -v "\.\."|head -1`
echo "$a"
if [ -d "$a" ]; then
echo mv "$a/*" "$a/.*" "$a/..*" .
mv "$a"/* "$a"/.* "$a"/..* .
echo rmdir "$a"
rmdir "$a"
else
rm "$a"
fi
exec $0 ./
----------------------------------------------------------------------
bei steuerzeichen und regexp im pfadnamen funktioniert das script nicht.
ich hoffe das prinzip ist klar.
cd problemdir
ersten eintrag vom dir extrahieren ($a)
if $a ist dir
mv $a/* aktuelles_verzeichnis
rmdir
else
rm $a
fi
recursiv in diesem verzeichnis weiter
# exec um die anzahl der prozesse nicht zu stark anschwellen zu lassen
wie erzeugt man sich diesen muell:
mkdir abc
cd abc
mkdir def
cd def
...
dann klappts auch mit perl ;-)
gruss
Jens
PS: ich hafte fuer gar nix ! ausfuehren der hier beschriebenen befehle
auch eigene gefahr.
--
--------------------------------------------------------------
| Jens Schlegel |
| TFH Berlin email: schlegel at tfh-berlin.de |
--------------------------------------------------------------
Mehr Informationen über die Mailingliste linux-l