Wo ist der Fehler in diesem bash?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
trickykid
Beiträge: 279
Registriert: 15.05.2003 12:37:06

Wo ist der Fehler in diesem bash?

Beitrag von trickykid » 04.01.2021 15:40:31

Ich habe ein kleines Problem mit nachfolgendem bash, das soll durch alle webspace Verzeichnisse laufen und in jedem Verzeichnis, das *.html Dateien enthält, eine index.htm mit einer Auflistung dieser Dateien in dem jeweiligen Verzeichnis hinterlegen, also mit Zeilen wie /home/user0/public_html/tags/debian.html und so weiter. Leider läuft es nicht durch und ich bekomme auch keine Fehlermeldung. Hab ich irgendwo ein ; oder " oder ... falsch gesetzt? -maxdepth 1 steht da nur zu Testzwecken!

Code: Alles auswählen

find /home/user0/public_html -maxdepth 1 -name "*.html" -type f -exec dir {} \; \
  |sort -u \
  |while read dir
do
  if [ -f "$dir"/index.htm ]
  then
     touch "$dir"/index.htm
  fi
done

tobo
Beiträge: 2349
Registriert: 10.12.2008 10:51:41

Re: Wo ist der Fehler in diesem bash?

Beitrag von tobo » 04.01.2021 17:20:29

trickykid hat geschrieben: ↑ zum Beitrag ↑
04.01.2021 15:40:31
Hab ich irgendwo ein ; oder " oder ... falsch gesetzt?
Sofern ich dein Vorhaben hier verstanden habe, dass erstmal nur eine leere index.htm existieren soll, dann würden sich folgende Änderungen anbieten:
Erstmal der Unterschied dir zu dirname, um den Dateiname zu strippen (nur das würde wohl bei sort -u Sinn machen) und dann die Negierung der Abfrage, ob die Datei bereits vorhanden ist.

Code: Alles auswählen

find /home/user0/public_html -maxdepth 1 -name "*.html" -type f -exec dirname {} \; \
  |sort -u \
  |while read dir
do
  if ! [ -f "$dir"/index.htm ]  
  then
     touch "$dir"/index.htm
  fi
done

Antworten