• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dateinamen in eine Datei schreiben per Script

Hallo zusammen,

ich möchte gerne ein Shellscript schreiben oder downloaden, welches mir den Inhalt eines Ordners in eine Datei schreibt.

Sollte es einen Ordner Buch geben und darunter sind Dateien wie seite1.txt und seite2.txt, möchte ich gerne nur die Dateinamen in ein Testfile schreiben, wo sie dann untereinander erscheinen:
seite1.txt
seite2.txt.
Sollte Sich in dem Unterordner Buch noch weitere Ordner befinden sollen diese nicht in die Datei geschrieben werden!

Diese Dateien sollen dann ausgelesen werden und nach und nach per ftp an einen Server übermittelt werden.

Kann mir da einer bei helfen? Wäre echt Klasse.

Danke und Gruß Mehlbox
 
mehlbox schrieb:
ich möchte gerne ein Shellscript schreiben oder downloaden, welches mir den Inhalt eines Ordners in eine Datei schreibt.
Code:
ls /pfad/Buch > /tmp/buchinhalt.txt
Sollte es einen Ordner Buch geben und darunter sind Dateien wie seite1.txt und seite2.txt, möchte ich gerne nur die Dateinamen in ein Testfile schreiben
Da gibt es mehrere Möglichkeiten. Eine ist, jeden Eintrag mit "test" zu prüfen, ob es sich hierbei um eine Datei handelt. Man kann aber auch find nehmen.
Code:
rm -f /tmp/buchinhalt.txt
cd /pfad/Buch || exit 99
for datei in `ls`
do
  if [ -f "$datei" ]
  then
    echo "$datei" >> /tmp/buchinhalt.txt
  fi
done
Diese Dateien sollen dann ausgelesen werden und nach und nach per ftp an einen Server übermittelt werden.
Code:
# Hier kommt das obige Sriptteil rein
ftp -in <<END_OF_FTP
user username password
cd /zielpfad
`sed 's/^/put /' /tmp/buchinhalt.txt`
bye
END_OF_FTP
Man muss übrigens nicht "ftp -in" und anschließend "user..." schreiben. Man kann sich auch über die .netrc anmelden. Siehe hierzu die man-pages.
Außerdem würde das ganze einfacher ganz ohne Datei gehen, indem man einen mput auf seite* macht. Aber das musst du selber wissen...
 
Hallo vielen Dank für Deinen Lösungsweg.

Ja ohne Datei würde es einfacher gehen da hast Du Recht, aber ich muss sicher gehen das nur die Dateien übertragen werden die in der Liste stehen, diese werden nach der Übetragung gelöscht.

Weil es kann passieren das ich während einer Übertragung eine neue Datei dort reingeschoben bekomme und diese kann ich dann beim nächsten Mal mit übertaregen, denn das script wird per crontab gesteuert und wir alle halbe Stunde die Dateien aus der erstellten Liste per ftp übertragen.

Na vielleicht hast du noch eine andere Idee wie ich sicher gehen kann das nur fertige abglegte Dateien übertragen werden und keine die noch in der Übertragung sind.

Danke und Gruß Mehlbox
 
mehlbox schrieb:
Na vielleicht hast du noch eine andere Idee wie ich sicher gehen kann das nur fertige abglegte Dateien übertragen werden und keine die noch in der Übertragung sind.
Hmmm. Das Problem ist, das die eine Datei, die gerade von ftp geschrieben wird wie eine "normale" aussieht. Vielleicht hilft es weiter, wenn man auf dateien geht, die die letzten paar minuten nicht geändert wurden. Dann müsstest du aber statt einem schlichten ls einen find nehmen.

Siehe hierzu
Code:
man find
insbesondere den Parameter -mmin.
 
Oben