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

Status
Für weitere Antworten geschlossen.

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Nein das stimmt so nicht... wie du in meiner Signatur erkennen kannst habe ich auch bereits DSM 5.1 und bei mir ist auch ipkg installiert.
Ich habe das "dos2unix" vorhin erst installiert und ausprobiert, funktioniert auch auf der DS einwandfrei.

Welches Synology System hast du denn?

Gruß
luddi
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Das hängt weniger an DSM 5.x, sondern mehr an der verbauten CPU. Schau mal ins Wiki.
Welche DS hast du?

Edit: Frogman war schneller.
 

Robonatoi

Benutzer
Mitglied seit
21. Jan 2015
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
um es mit Windows anschauen zu können, würde ich folgendes machen:
Rich (BBCode):
DATE=$(date +"%Y%m%d_(%H%M%S)")
ls -A /volume1/filme | tr '\r' '\r\n' | sort > "/volume1/filme/liste_$DATE.txt"
oder wenn es eingebunden ist, unter Windows:
Rich (BBCode):
dir /B /O:N /S /ad > 'Filme.txt'
Bedeutung: Liste im einfachem Format, sortiert nach Namen, rekursive, nur Verzeichnisse, umgeleitet in Textdatei
unter Windows werden automatisch die "richtigen" (für Win User) Zeilenumbrüche verwendet.
 

tommytom79

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

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
Steht doch da:

Rich (BBCode):
dir /B /O:N /S /ad > 'Filme.txt'
Bedeutung: Liste im einfachem Format, sortiert nach Namen, rekursive, nur Verzeichnisse, umgeleitet in Textdatei
unter Windows werden automatisch die "richtigen" (für Win User) Zeilenumbrüche verwendet.

Eingebunden bedeutet, dass unter Windows ein gemeinsamer Ordner der DS als Netzlaufwerk eingebunden ist. Dann kann man unter Windows das dir-Kommando lokal auf das Netzlaufwerk absetzen.
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
und das "O" steht für das Laufwerk und das N? Was ist, wenn ich es z.B unter I:\Kinderfilme\ habe? Wie muss dann der Code fürs Windows aussehen?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Hier findest Du die Doku zum 'dir'-Befehl und seiner Schalter...
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
und das "O" steht für das Laufwerk und das N? Was ist, wenn ich es z.B unter I:\Kinderfilme\ habe? Wie muss dann der Code fürs Windows aussehen?

Nein, das dir arbeitet in dem Fall lokal - sprich auf dem Pfad, den Du vorher ausgewählt hast. Das O steht für die Sortierung, das N dafür, dass nach Namen sortiert wird. Geh einfach in das Verzeichnis und rufe dann den Befehl auf:

Rich (BBCode):
i:
cd \Kinderfilme
dir /B /O:N /S /ad > 'Filme.txt'

Oder schreibe alles in eine Zeile:

Rich (BBCode):
dir /B /O:N /S /ad I:\Kinderfilme > 'Filme.txt'
 

tommytom79

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

Habe folgenden Code von oben an mich angepasst und das Script ausgeführt:

DATE=$(date +"%Y%m%d_(%H%M%S)")
ls -A /volume1/video/Kinderfilme | tr '\r' '\r\n' | sort > "/volume1/Video/Kinderfilme/liste_$DATE.txt"

Er legt zwar eine liste.txt Datei an, welche aber nur 1 KB groß ist und folgende Inhalt enthält: ....DB Kinderfilme usw..

Das NAS hat über 5 Minuten eine CPU Auslastung von ca. 50 %. Daraufhin habe ich das NAS neugestartet.

Was mache ich bei dem Befehl falsch?
Beim alten Code

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

hatte ich folgendes Problem:

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?
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
Ich kenne die Option -A für das Kommando ls nicht. Selbst wenn es die geben mag, wird sie vermutlich von der abgespeckten DSM-Version nicht unterstützt werden. Ich würde mir an Deiner Stelle statt der tr-Transformation einen vernünftigen, kostenlosen Editor wie notepad++ unter Windows installierst, Dann kannst Du auch die Datei, die der "alte" Code liefert, problemlos ansehen. Ansonsten tut es vielleicht dieser Code:

Rich (BBCode):
DATE=$(/bin/date +"%Y%m%d_(%H%M%S)")
ls -R /volume1/video/Kinderfilme | sort | tr '\r' '\r\n' > "/volume1/Video/Kinderfilme/liste_$DATE.txt"
 

tommytom79

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

Danke für den Code. Ich werde ihn zu Hause dann ausprobieren. Ich habe bereits mit dem alten Code die Datei mit Notepad++ geöffnet, half aber auch nichts. Die Ordner standen alle ganz oben und anschließend alle Dateien extra darunter. Ich hoffe, dass das mit deinem Code besser aussieht.
 

tommytom79

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

Habs soeben ausprobiert, das Problem ist noch immer das gleiche. Es werden oben alle Ordner samt Unterordner angezeigt und dann kommen unter einander alle Filme (Dateien). Ich hätte es gerne, dass der vollständige Pfad samt Unterordner und Film (Datei) in einer Zeile steht.
Ich hoffe, dass mir noch jemand helfen kann.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
Natürlich, jetzt verstehe ich endlich. Probiere es einmal hiermit:

Rich (BBCode):
DATE=$(/bin/date +"%Y%m%d_(%H%M%S)")
find /volume1/video/Kinderfilme | sort | tr '\r' '\r\n' > "/volume1/Video/Kinderfilme/liste_$DATE.txt"

In notepad++ kannst Du übrigens folgendermaßen ganz einfach sortieren:

Bearbeiten / Zeilenoperationen / Zeilen aufsteigend sortieren.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ich kenne die Option -A für das Kommando ls nicht. Selbst wenn es die geben mag, wird sie vermutlich von der abgespeckten DSM-Version nicht unterstützt werden.

Ist auch unter der abgespeckten busybox (ash) unter DSM vorhanden.

Rich (BBCode):
-A, --almost-all
	      do not list implied . and ..

Die relativen Verzeichnispfade . und .. werden damit nicht gelistet.

Gruß
luddi
 

tommytom79

Benutzer
Mitglied seit
09. Sep 2013
Beiträge
605
Punkte für Reaktionen
13
Punkte
38
sorry, aber ich hab bei meinem Notepad++ unter dem Menüpunkt "Bearbeiten" kein Untermenü "Zeilenoperationen"
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
Habe oben neuen Code eingefügt, probier den bitte einmal aus.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.104
Punkte
829
Ist auch unter der abgespeckten busybox (ash) unter DSM vorhanden.

Rich (BBCode):
-A, --almost-all
	      do not list implied . and ..

Die relativen Verzeichnispfade . und .. werden damit nicht gelistet.

Ah, danke für den Hinweis, hilft aber hier nicht weiter - vor allem nicht als Substitut für -R.
 
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