18. juni 2006 - 21:09 Der er 7 kommentarer og
2 løsninger

Genopslag: (Automatisk) slette mapper med mellemrum i navnet

Genopsalg af http://www.eksperten.dk/spm/715328

Har en stor UNIX baseret filserver...
Der er oprettet en række Sambabaserede mapper.
Windows-brugerene opretter diverse mapper efter behov/project.
Disse mapper/filer slettes automatisk efter X dage via et CRON job om natten fint nok.
MEN
Visse mapper kan indeholde ét eller flere MELLEMRUMSTEGN i navnet og det kan [rmdir] jo som standard ikke finde ud af...

Eks:
/server/P2/Peter Hansen 123456/bla/bla/filer

Så mappen
/Peter Hansen 123456/bla/bla/filer
og nedefter skal slettes (der ER gået 2 døgn i dette tilfælde) men [rmdir] pejer på
Peter
Hansen
123456
og det er der jo ikke noget der hedder - og så bliver mappen
/Peter Hansen 123456/
hængende resten af livet...

CRON jobet er pt. noget i denne retning (uddrag):

#! /sbin/sh
short="P1 P2 P3 P4 P5 P6 P7 P8 P9"
# Short term cleanup (Delete 2 days)
for dir in $short
do
        find /server/$dir/ -mtime +2 -type f -exec rm {} \;
        tempdir=`find /server/$dir/ -type d`
        for i in $tempdir
        do
                n=`ls -a1 $i | wc -l`
                if [ $n -eq 2 ]; then
                      rmdir "$i"
                      # echo rmdir "$i"
                fi
        done
done
19. juni 2006 - 20:25 #1
Øhhh - ska' I vide mere ???

... eller er der ikke nogen UNIX folk her på Eksperten.dk ?
21. juni 2006 - 07:10 #2
Hmmm...

rmdir -r "Peter Hansen 123456"

er princippet...
men at få det indbygget i ovenstående script...

Hmmm...

Work In Progress...
22. juni 2006 - 22:04 #3
Anybody ?
Avatar billede ejvindh Ekspert
24. juni 2006 - 13:41 #4
Nu kender jeg ikke det sprog, som du programmerer i her, men i visse sprog kan man gøre således, hvis man ønsker at der skal indgå nogle anførselstegn indenfor anførselstegn:

rmdir """$i"""

Hvis $i indeholder strengen:
Peter Hansen 123456

...bliver det til:
rmdir "Peter Hansen 123456"

Måske det kan hjælpe dig videre ?
16. juli 2006 - 19:45 #5
... har fundet fidusen i HELE scriptet...
16. juli 2006 - 19:46 #6
Jo - jeg skal nok klippe det ind i denne tråd...
18. juli 2006 - 12:06 #7
short="P1 P2 P3 P4 P5 P6 P7 P8 P9"
for dir in $short
do
    # Search for plain files older than 2 days and write to logfile
        find /server/$dir/ -mtime +2 -type f >> /tmp/Cleanup-files.log

    # Search for plain Directorys older than 2 days and write to logfile
    find /server/$dir/ -mtime +2 -type d >> /tmp/Cleanup-folders.log
done

awk '{print "rm \"" $0 "\""}' /tmp/Cleanup-files.log >> /tmp/Cleanup.tmp
awk '{print "rmdir \"" $0 "\""}' /tmp/Cleanup-folders.log >> /tmp/Cleanup.tmp

# Do the show...
sh /tmp/NLE_Cleanup.tmp
18. juli 2006 - 12:07 #8
<ejvindh>: Ska' vi dele i porten ?
Avatar billede ejvindh Ekspert
23. juli 2006 - 14:17 #9
Det ser ud til at være en rimelig løsning :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester