2016-06-02 6 views
1

Angenommen, ich habe bereits die Ausgabe eines Befehls 'ls -la', und ich möchte jetzt nur die Dateinamen analysieren. Ich habe diesen regulären Ausdruck so weit gefunden, dass ich ihn gefunden habe, aber wie kann ich das ändern, um zu berücksichtigen, dass im Dateinamen selbst Whitespace ist?Wie kann ich diesen regulären Ausdruck ändern, um den Dateinamen aus ls -a output zu holen?

Beispiel 'ls -la' Ausgabe:

-rw-r--r-- 1 admin staff 460340057 May 4 14:19 test_large_file.xml 

Regular Expression ich bisher haben:

\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+(\S+) 
+0

Ich denke, das könnte funktionieren? Aber ich könnte etwas vermissen: \ S + \ s + \ S + \ s + \ S + \ s + \ S + \ s + \ S + \ s + \ S + \ s + \ S + \ s + \ S + \ s + (\ S | \ s | - | _ | % 20) + –

+2

Parsen 'ls' Ausgabe in bash ist keine gute Idee –

+0

Versuchen Sie es mit' ls -a' als Ausgangspunkt. Es kann unnötig sein, das Format -l zu wählen, nur um es herauszufiltern. –

Antwort

1

Sie so etwas wie verwenden:

/^.*\d\s+(.*?)$/m 

https://regex101.com/r/mR4rH1/1

+0

Funktioniert dies für neue Zeilen und/oder Leerzeichen im Dateinamen? –

+0

Ja, es sollte mit beiden funktionieren. Sie können es mit dem regex101 über –

+0

testen. Verwenden Sie den Regex mit sed? –