Script, zum Erstellen einer Textdatei mit Liste zum Inhalt eines Ordners

Status
Für weitere Antworten geschlossen.

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
590
Punkte für Reaktionen
13
Punkte
38
Hallo!

Ich bräuchte ein Script, welches mir täglich eine Textdatei mit Inhalt eines Ordners inkl. Unterordner (video/Kinderfilme/) anlegt.
Der Pfad, wo die Datei abgelegt werden soll, kann ruhig auch im gleichen Verzeichnis sein.

Ich hoffe, dass mir jemand helfen kann.

LG
Thomas
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Hi,

probier es mal hiermit:
Rich (BBCode):
DATE=$(date +"%Y%m%d_(%H%M%S)")
ls -R /volume1/vidoe/Kinderfilme | sort > "/volume1/video/Kinderfilme/liste_$DATE.txt"

Gruß
luddi
 
Zuletzt bearbeitet:

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
590
Punkte für Reaktionen
13
Punkte
38
hallo

danke sehr für die rasche Antwort, werd ich gleich probieren, wenn ich nach Hause komme
werden auch Unterordner von "Kinderfilme" berücksichtigt? heißt, dass ich im Ordner "Kinderfilme" noch mehrere Unterordner habe

lg
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Der Parameter -R steht für 'rekursiv' und somit werden alle Dateien in allen Unterordner unter dem Verzeichnis "Kinderfilme" gelistet.
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
590
Punkte für Reaktionen
13
Punkte
38
super danke
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
590
Punkte für Reaktionen
13
Punkte
38
Funktioniert, danke. Nur, wenn ich dieses Textfile mit dem normalen Windows Editor öffne, steht alles in einer Wurst. Wenn ich es mit WordPad öffne, stehen auf den ersten Seiten die Verzeichnisnamen und unten dann die Dateinamen.
Super wäre es, wenn er mir, egal mit welchem Editor ich das Textfile öffne, pro Zeile den Pfad inkl. Dateinamen anzeigt. Wäre das noch irgendwie möglich?

LG
Thomas
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Hallo Zusammen,

vor dem gleichen Problem stehe ich auch.
Wenn ich mit dem og. Befehl eine Liste aller meiner Ordner aus dem Ordner Filme erstellen will, habe ich zwar die Text-Datei mit allen Filmtiteln enthalten, jedoch sind diese ohne Zeilenumbruch hintereinanderweg gelistet.

Bei mir ist nur der Unterschied, das eine Liste mit den enthaltenen Ordnern reicht.

Beispiel:

Film1 Film2 Film3 etc.

Und so sollte es aussehen:

Film1
Film2
Film3
etc.

Aktuell nutze ich folgenden Befehl:
DATE=$(date +"%Y%m%d_(%H%M%S)")
ls -A /volume1/filme | sort > "/volume1/filme/liste_$DATE.txt"

Kann mir bitte jemand helfen das Problem zu lösen. Ich bin leider ein Linux Noob. ;-)

Vielen Dank im Voraus!

Gruß
PaT
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Um welche Dateitypen handelt es sich?

z.B. für mkv´s kannst du dieses hier verwenden:

Rich (BBCode):
#!/bin/sh

Suchpfad="/volume1/filme"
Zielpfad="/volume1/filme"

OIFS=$IFS
IFS=$'\n'
DATE=$(date +"%Y%m%d_(%H%M%S)")

for item in `find "$Suchpfad" -type f -regex '.*\.[mM][kK][vV]$'`; do
  echo `basename "$item" .mkv` >> "$Zielpfad/liste_$DATE.txt"
done

IFS=$OIFS
exit 0

Die Ausgabe ist dann wie folgt:
Rich (BBCode):
#cat liste_[DATUM].txt
Film 1
Film 2
..usw

Gruß
luddi
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Es geht lediglich um die Ausgabe der enthaltenen Ordner. Welche Dateitypen sich wiederum in den Ordnern befinden spielt keine Rolle.
Mein Problem besteht darin, dass die Ausgabe in der Datei ohne Zeilenumbrüche erfolgt.

Was also muss ich an dem von mir genannten Befehl ändern, so dass die Ausgabe in der .txt-Datei mit Zeilenumbrüchen erfolgt.
Geöffnet wird die Datei unter Windows mit dem Editor/Notepad.

Gruß und Danke für die rasche Antwort.
PaT
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Probiere es doch zunächst einmal aus das script... dann wirst du sehen dass es genau das macht was du dir vorstellst nämlich die Dateinamen (Filme) schön untereinander mit Zeilenumbruch auflistet.

Ein kleines Beispiel zu dem Script...
Zur Annahme deine Verzeichnisstruktur schaut wie folgt aus:

Rich (BBCode):
/volume1/filme
      +Film 1
            / Film 1.mkv

      +Film 2
            / Film 2.mkv

Und dann erhältst du mit dem von mir gezeigten Script folgende Ausgabe:
Rich (BBCode):
Film 1
Film 2

Ganz ohne Dateiendung und mit Zeilenumbruch. Ich denke das ist genau das was du dir doch wünscht, oder etwa nicht?

Gruß
luddi
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Das ist soweit richtig.
Mir geht es aber dennoch allein um die Ordnernamen. Insbesondere die Dateitypen variieren zwischen mkv, avi und iso.
Dazu kommt, das die Ordnerbezeichnungen meist besser sind, als die eigentlich Dateinamen der Videodateien, da diese oft vom Titel her abgekürzt sind.
Daher wäre mir die Lösung mit einer Auflistung der Ordner selber lieber.

Verzeichnisstruktur:
Rich (BBCode):
/volume1/filme
      +Film 1
      +Film 2
      +Film 3

Ausgabe in der .txt-Datei
Rich (BBCode):
Film 1
Film 2
etc.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Mir geht es aber dennoch allein um die Ordnernamen. Insbesondere die Dateitypen variieren zwischen mkv, avi und iso.
Das hier ist überhaupt kein Problem... dazu kann man noch weitere Dateierweiterungen definieren.

Dazu kommt, das die Ordnerbezeichnungen meist besser sind, als die eigentlich Dateinamen der Videodateien, da diese oft vom Titel her abgekürzt sind.
Das hier muss ich nicht unbedingt verstehen dass die Dateinamen anders benannt sind als die Verzeichnisse in denen die Filme liegen. Es handelt sich doch um den exakt gleichen Film... Aber das ist etwas persönliches und möchte dir hier nicht in deine Dateistrukturen hineinreden. Jeder macht es so wie es ihm am besten gefällt, also respektiere ich deine Strukturen.

Daher wäre mir die Lösung mit einer Auflistung der Ordner selber lieber.

Verzeichnisstruktur:
Rich (BBCode):
/volume1/filme
      +Film 1
      +Film 2
      +Film 3

Ausgabe in der .txt-Datei
Rich (BBCode):
Film 1
Film 2
etc.
Und wenn ich deine Anforderung richtig verstanden habe dann soll die Ausgabe natürlich nur den Namen des Films beinhalten und nicht den kompletten Dateipfad, richtig?

Gruß
luddi
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Ansonsten liefert ein
Code:
find -maxdepth 1 -type d
auch nur die Unterordner im aktuellen Ordner (wo man natürlich die reinen Namen wieder herausstrippen kann)...
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Und man muss natürlich wieder die bekannten '@eaDir' Verzeichnisse ausblenden...

Gruß
luddi
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Also wie gesagt bin ich ein Noob was die Befehle angeht.
Daher kann ich mit den von euch genannten neuen Vorschlägen nicht so richtig was anfangen.

Um meine Frage jetzt nochmal zu betonen:

Gibt es eine Möglichkeit beim folgenden Befehl einen Parameter einzubauen, der für einen Zeilenumbruch in der .txt-Datei sorgt?

Code:
DATE=$(date +"%Y%m%d_(%H%M%S)")
ls -A /volume1/filme | sort > "/volume1/filme/liste_$DATE.txt"

Ich bin auch gerne offen für andere Lösungsansätze, die zum gleichen Ergebnis führen würden.
Jedoch bräuchte ich die fertig zum Kopieren und Einfügen. ;-)

Vielen Dank im Voraus!
Gruß
PaT
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Hier, nimm das...

...nur noch die Parameter 'Suchpfad' und 'Zielpfad' entsprechend deiner Umgebung anpassen, Fertig!

Rich (BBCode):
#!/bin/sh

Suchpfad="/volume1/filme"   #Suchpfad entsprechend eigener Umgebung anpassen
Zielpfad="/volume1/filme"   #Zielpfad entsprechend eigener Umgebung anpassen
tempOutFile="$Zielpfad/.tempOutFile"

DATE=$(date +"%Y%m%d_(%H%M%S)")

ls -A "$Suchpfad" | sort > "$tempOutFile"
sed -i '/\@eaDir/d' "$tempOutFile"

mv "$tempOutFile" "$Zielpfad/liste_$DATE.txt"

exit 0

Gruß
luddi
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
[...]
Geöffnet wird die Datei unter Windows mit dem Editor/Notepad
[...]
Sorry, jetzt erst habe ich dein eigentliches Problem verstanden. Die Liste wird mit dem unix line feed (Unix LF) erstellt und das kann Windows mit seinem Notepad nicht als Zeilenumbruch erkennen. Windows benötigt dafür den CR LF (carriage return line feed). Aber wenn du die Datei mit einem vernünftigen Editor öffnest dann wird dieser das auch richtig interpretieren.
z.B. Notepad++ (http://notepad-plus-plus.org)

Den Unterschied beider Editoren siehst du im folgenden Bild.

Notepad_vs_Notepad++.png

Gruß
luddi
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Dass die Dateien bei einem anderen Editor/Programm anders dargestellt werden hatte ich bereits woanders gelesen.
Jedoch hatte ich die Hoffnung das es dafür eine Lösung gibt, die mit Hilfe von Parametern beim erstellen der Dateien direkt greift, ohne das ich wieder ein "Zusatzprogramm" installieren muss.

Wenn es dafür jedoch keine Lösung gibt, werde ich auf Notepad++ zurückgreifen. :)

Trotzdem vielen Dank für die Bemühungen bis hier hin.

Gruß
PaT
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Hast du ipkg auf deinem System installiert? Wenn ja kannst du das package "dos2unix" installieren.

Und dann kannst du die Datei in das DOS Format umwandeln:

a.) entweder die Datei direkt
Rich (BBCode):
unix2dos file.txt

b.) oder die Datei einlesen und eine neue erstellen, somit bleibt file.txt im unix Format und new_file.txt wird im DOS Format erstellt.
Rich (BBCode):
unix2dos -n file.txt new_file.txt

Gruß
luddi
 

iPaT

Benutzer
Mitglied seit
09. Okt 2012
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Leider bin ich schon auf DSM 5.x.
Soweit ich das auf die schnelle recherchieren konnte, gibt es noch keine kompatible Version für DSM 5.

So muss ich mich dann wohl wirklich erstmal mit Notepad++ begnügen. ;-)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat