Dateien mit Leerzeichen werden in script nicht erfasst.

20/11/2007 - 10:12 von Matthias Dort | Report spam
Hallo,

ich habe das Problem, dass mein automatisches Loeschscript keine Dateien mit
Leerzeichen erfasst. Wie kann man vermeiden, dass der Dateiname offenbar als
zwei strings uebergeben wird?

Vielen Dank fuer einen Tipp.

Gruss

Matthias

-loeschscript-
#!/bin/sh
# Es werden alle in der for-schleife genannten Dateien,
# die aelter als n Tage sind geloescht

# Funktionen

delfiles()
{

/usr/bin/find $1 -mtime +300 -exec rm -f {} \;

}

for path in /home/matthiasdort/temp/backup*

do
delfiles $path
eof-loeschscript-

aufruf- Die Problemdatei heisst "backup 100"
user@nvcl04:~/temp > ls -l
insgesamt 4
-rw-r--r-- 1 matthias users 0 Nov 20 09:30 backup 100
-rwxr-xr-x 1 matthias users 260 Nov 20 09:33 deloldfiles
matthiasdort@nvcl04:~/temp > ./deloldfiles
/usr/bin/find: /home/matthiasdort/temp/backup: Datei oder Verzeichnis nicht
gefunden
user@nvcl04:~/temp >
eof-aufruf-


Gruss/2
Matthias
 

Lesen sie die antworten

#1 Thomas Rachel
20/11/2007 - 10:21 | Warnen spam
Matthias Dort schrieb:
Hallo,

ich habe das Problem, dass mein automatisches Loeschscript keine
Dateien mit Leerzeichen erfasst. Wie kann man vermeiden, dass der
Dateiname offenbar als zwei strings uebergeben wird?



Indem Du

/usr/bin/find $1 -mtime +300 -exec rm -f {} \;

ersetzt durch

/usr/bin/find "$1" -mtime +300 -exec rm -f {} \;


Noch besser wàre

/usr/bin/find "$1" -mtime +300 -exec rm -f {} +

sofern Du ein standardkonformes find (das ist bei GNU find erst ab einer
bestimmten Version der Fall) verwendest.

Mit \; wird rm für jede Datei einzeln aufgerufen, mit + hingegen
möglichst viel gesammelt und ein einziger Aufruf daraus gemacht.


HTH,

Thomas

Ähnliche fragen