Warum scheitert das?
touch "$(printf "a\nb")"; find . -regex './.\n.'
Ich habe auch diese ausprobiert, von denen keine funktioniert:
find . -regextype posix-extended -regex '.\n.'
find . -regextype posix-awk -regex '.\n.'
find . -regextype posix-basic -regex '.\n.'
find . -regextype posix-egrep -regex '.\n.'
Der einzige Weg, wie es zu funktionieren scheint, ist (danke @MichaelMrozek)
find . -regex './.'$'\n''.'
Was gelinde gesagt umständlich ist. Warum scheinen die regulären Ausdrücke von find nicht in der Lage zu sein, damit umzugehen \n
?
Update als Antwort auf die bisherigen Antworten:
OK, ich verstehe, dass dies \n
nicht Teil von ERE ist und dass dies eines meiner Missverständnisse war, sondern den find
Anspruch auf Unterstützung posix-awk
und beides gawk
und mawk
Übereinstimmung \n
wie erwartet:
$ printf "f1l1\nhas newline:f2l1#f1l2 does not:f2l2#" |
mawk -F: 'BEGIN{RS="#"}; ($1~/\n/){print $1}'
f1l1
has newline
Ich habe kein reines awk
zum Testen, also awk
passt POSIX vielleicht nicht zusammen? Andernfalls werden find
keine posix-awk
regulären Ausdrücke implementiert ?
-regex
fehlschlägt, nicht Wie finde ich Dateien, die Zeilenumbruch im Dateinamen enthalten? was du perfekt beantwortet hast :).
awk
Regex Sprache nicht kennt , \n
sondern dass der awk
Dolmetscher tut und das ist , warum es übereinstimmt. Daher würde die Implementierung von awk
regulären Ausdrücken find
nicht bedeuten, dass dies \n
übereinstimmen sollte. Danke euch allen!
find . -name $'*\n*'
umständlich?