Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich bekomme aus einem Programm ein Verzeichnislisting, ähnlich dem von "ls -l" generiert.

Nun muss ich ausschließlich den Dateinamen davon auslesen. Alles kein Problem,

solange keine Leerzeichen in diesem Dateinamen steht, erledigt das


cat /home/ftp/xxxx/.listing |grep ^- | awk '{print \$9}'

ohne probleme. Ist jedoch ein Leerezeichen enthalten, bringt der Befehl natürlich nur den Dateinamen bis zum ersten Leerzeichen :( Ich kann auch den Feldtrenner nicht ändern, da die anderen Spalten ja auch mit Leerzeichen getrennt sind. Ich bräuchte also eine Lösung, die je nachdem wieviele Leerzeichen im Datienamen enthalten sind, diesen aus 2 bis n Feldern zusammensetzt. Hier mal das Listing das ich erhalte.

drwxr-xr-x   2 pokerschau_comm ftpusers      120 Jan  9 15:52 .

drwxr-xr-x   7 pokerschau_comm ftpusers       65 Dec  6 20:58 ..

-rw-r--r--   1 pokerschau_comm ftpusers     2315 Jan  9 15:19 12_20088_1515_Pacip_ SD8-00.xml

-rw-r--r--   1 pokerschau_comm ftpusers     6106 Jan  9 15:52 188_2108_174_Ine_ S59.xml

Wäre klasse wenn mir jemand einen Tipp geben könnte!

Simon

Hi,

ich würde auch den Weg gehen, die Leerzeichen aus den Dateinamen rauszubekommen - ist nämlich ganz schlechter Stil.

Falls nicht kommst du um Regular Expressions nicht drum rum.

Quasi ... alles nach dem 8ten Leerzeichen ist das was ich suche.

Ich bin mir jetzt aber nicht sicher, ob die AWK RegExp dies auch können, sind ja leider etwas beschränkt (hier kannst aber nachschauen)- mit Perl ist es ein Einzeiler, falls du umsteigen kannst.

ciao,

vic

well ... ich würds einfach so machen $9 und $10 auszugeben

ist zwar dirty, aber da der dateiname eh der letzte eintrag in deinem listing ist isses wohl schnurps

falls es kein $10 gibt ... isses ja auch net schlimm :)

also:

cat /home/ftp/xxxx/.listing |grep ^- | awk '{print \$9 " "$10}'

ist ja nur ein vorschlag, ob ers so nutzen kann muss der TE selbst wissen ... ich hab ja gesagt das es ein sehr dirty workaround ist ;)

Sag beim cut doch einfach er soll nur das letzte Feld nehmen bis zum Ende. Der Teil davor sieht ja gleich aus bei allen Dateien. Schalter -f :). Ups war ja cat und nicht cut. Naja dann pack einfach noch ein cut dazwischen :)

Hi,

welchen "delemiter" würdest du bei cut nehmen? Ich kenne keinen, der so flexibel ist und 1-n Leerzeichen akzeptiert. Lass mich aber gerne eines besseren belehren. Wenn dann müsste man das ganze vorher durch tr jagen und die mehrfachen Leerzeichen löschen. Problem ist dann aber wieder, dass man auch die Leerzeichen aus den Dateinamen löschen würde ...

ciao,

vic

Hi,

vielleicht klappt es sehr sehr dirty mit

cat /home/ftp/xxxx/.listing |grep ^- |cut -c<Position of the first character of the filename>-

falls sich die erste Position des Dateinamen nicht verändert.

Bei mir hat es testweise geklappt, dennoch würde ich es dir nicht empfehlen, da sobald sich z.B. die Dateigrösse erheblich verändert auch der Anfangsbuchstabe verrutscht.

ciao,

vic

so ich hab mal ein bisschen rumgetestet und eine sehr schöne lösung gefunden :)


cat /home/ftp/xxxx/.listing |grep ^- | awk -F ":" '{print $2}'| sed -r 's/^.{3}//'

als seperator nehm ich einfach das : der zeit, hab also dann noch die beiden minuten zahlen und ein leerzeichen vorm dateinamen, die ich dann mit dem sed wegschnibbel :bimei

so ich hab mal ein bisschen rumgetestet und eine sehr schöne lösung gefunden :)


cat /home/ftp/xxxx/.listing |grep ^- | awk -F ":" '{print $2}'| sed -r 's/^.{3}//'

als seperator nehm ich einfach das : der zeit, hab also dann noch die beiden minuten zahlen und ein leerzeichen vorm dateinamen, die ich dann mit dem sed wegschnibbel :bimei
Hmm, oder so:

cut -d ':' -f '2' < /home/ftp/xxxx/.listing | cut -d ' ' -f 2-

Müßte bei einer großen Datei schneller sein, denke ich...

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.