ubuntuusers.de

BASH: Dateiliste einzeln abarbeiten

Status: Gelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

michahe

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Hallo,

Eine Liste von Dateien (ohne Verzeichnisse und ohne Inhalt etwaiger Unterverzeichnisse) wird erzeugt und soll Datei für Datei (zeilenweise) abgearbeitet werden:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
WorkDir="/home/meinName/.thunderbird"
WorkFiles=$(find "$WorkDir" -maxdepth 1 -type f | sort)
echo "$WorkFiles"
#while IFS= read -r line
echo "nun einzelne Zeilen ..."
for WorkFile in "$WorkFiles"; do
     echo "$WorkFile"
     echo "---"
done

Das liefert:

/home/meinName/.thunderbird/installs.ini
/home/meinName/.thunderbird/profiles.ini
/home/meinName/.thunderbird/test 01.txt
Die Liste ist korrekt, nun möchte ich einzelne Zeilen ...
/home/meinName/.thunderbird/installs.ini
/home/meinName/.thunderbird/profiles.ini
/home/meinName/.thunderbird/test 01.txt
---

Warum werden die Zeilen nicht einzeln gelistet (mit –- jeweils als Trenner) bzw. wie kann ich das erreichen?

Bearbeitet von rklm:

Syntaxhighlighting. Bitte beachte Forum/Syntax und nutze die Vorschaufunktion!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

michahe schrieb:

Warum werden die Zeilen nicht einzeln gelistet (mit –- jeweils als Trenner) bzw. wie kann ich das erreichen?

Weil Du die Variable in Zeile 7 quotest, so dass nur ein Wert geliefert wird und Du somit nur einen Schleifendurchlauf bekommst. Da Du sowieso nur eine Ebene verarbeiten willst, ist es viel besser das direkt mit einer Schleife zu erledigen:

1
2
3
4
5
6
for work_file in "$WorkDir"/*; do
  if [ -f "$work_file" ]; then
    echo "$work_file"
    echo ---
  fi
done

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

Danke rklm, Dein Code löst mein Problem.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

michahe schrieb:

Danke rklm, Dein Code löst mein Problem.

Bitte dann als "gelöst" markieren.

Antworten |