Leerzeichen in Datei- und Verzeichnisnamen unter unix shell-skript
hallo,
ich habe höchst wahrscheinlich ein einfaches Problem.Ich bin leider Entwickler, und muss mich um meine Dateien kümmern.
Folgendes Problem nun:
Aus platzgründen möchte ich alle Text und sostige Dateien komprimieren.Ich hole mir per find alle Dateien incl. Pfade und möchte diese nun per for Schleife komprimieren und schließend löschen. Hier ist der Code:
echo "hallo geben Sie den Pfad an, indem die TXT-Dateien zum komprimieren liegen"
read answer
find $answer -name "*.TXT" -print -o -name "*.txt" -o -name "*.DAT" -o -name "*.dat" -print > pfad ;
for name in 'cat pfad'
do
'komprimiere und lösche'
done:
Das Problem ist nun, dass die For-Schleife die Leerzeichen als Trennmarke nimmt und somit das Ganze nicht funktioniert.
Hat jemand eine Idee?
Bedanke mich schon mal.
Grüsse
ich habe höchst wahrscheinlich ein einfaches Problem.Ich bin leider Entwickler, und muss mich um meine Dateien kümmern.
Folgendes Problem nun:
Aus platzgründen möchte ich alle Text und sostige Dateien komprimieren.Ich hole mir per find alle Dateien incl. Pfade und möchte diese nun per for Schleife komprimieren und schließend löschen. Hier ist der Code:
echo "hallo geben Sie den Pfad an, indem die TXT-Dateien zum komprimieren liegen"
read answer
find $answer -name "*.TXT" -print -o -name "*.txt" -o -name "*.DAT" -o -name "*.dat" -print > pfad ;
for name in 'cat pfad'
do
'komprimiere und lösche'
done:
Das Problem ist nun, dass die For-Schleife die Leerzeichen als Trennmarke nimmt und somit das Ganze nicht funktioniert.
Hat jemand eine Idee?
Bedanke mich schon mal.
Grüsse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 46166
Url: https://administrator.de/forum/leerzeichen-in-datei-und-verzeichnisnamen-unter-unix-shell-skript-46166.html
Ausgedruckt am: 09.04.2025 um 19:04 Uhr
4 Kommentare
Neuester Kommentar
Dein problem ist der normale print. Nimm den printf, damit hat eine bessere Ausgabe, also z.B.
find $answer -type f -name "*.[Tt][xX][tT]" -printf "%P"
printf kann noch mehr infos ausgeben, mittels regexp kannst auch gleich beim Suffix nach unterschiedlichen Schreibweisen schauen, z.B: .TXT, .txt, .Txt
Gruß, Marcus
find $answer -type f -name "*.[Tt][xX][tT]" -printf "%P"
printf kann noch mehr infos ausgeben, mittels regexp kannst auch gleich beim Suffix nach unterschiedlichen Schreibweisen schauen, z.B: .TXT, .txt, .Txt
Gruß, Marcus
Ahh, ok. Ich habe das bei meinem Backup-Script so gelöst:
cat $LISTFILE | while read line
do
F_NAME=`printf "$line" | cut -d, -f2 | sed -e 's/"//g'`
cat $LISTFILE | while read line
do
F_NAME=`printf "$line" | cut -d, -f2 | sed -e 's/"//g'`
- mach was mit $F_NAME
wobei mein Listfile den Aufbau
Dateigroesse in MB, "Dateiname mit Pfad und blanks"
Dateigroesse in MB, "Naechster dateiname mit Pfad und blanks"
hatte. Da Du nur den Dateinamen ohne quotes im Listfile hast, würde der
Ausdruck zum auslesen einfach nur
F_NAME=`printf "$line\n"`
bzw.
printf "Mach was mit Datei $line\n"
lauten.