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 \nnicht Teil von ERE ist und dass dies eines meiner Missverständnisse war, sondern den findAnspruch auf Unterstützung posix-awkund beides gawkund mawkÜbereinstimmung \nwie 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 awkzum Testen, also awkpasst POSIX vielleicht nicht zusammen? Andernfalls werden findkeine posix-awkregulären Ausdrücke implementiert ?
-regexfehlschlägt, nicht Wie finde ich Dateien, die Zeilenumbruch im Dateinamen enthalten? was du perfekt beantwortet hast :).
awkRegex Sprache nicht kennt , \nsondern dass der awkDolmetscher tut und das ist , warum es übereinstimmt. Daher würde die Implementierung von awkregulären Ausdrücken findnicht bedeuten, dass dies \nübereinstimmen sollte. Danke euch allen!
find . -name $'*\n*'umständlich?