Tại sao điều này thất bại?
touch "$(printf "a\nb")"; find . -regex './.\n.'
Tôi cũng đã thử những thứ này, không cái nào trong số đó hoạt động:
find . -regextype posix-extended -regex '.\n.'
find . -regextype posix-awk -regex '.\n.'
find . -regextype posix-basic -regex '.\n.'
find . -regextype posix-egrep -regex '.\n.'
Cách duy nhất có vẻ hoạt động là (cảm ơn @MichaelMrozek)
find . -regex './.'$'\n''.'
Đó là rườm rà để nói rằng ít nhất. Vì vậy, tại sao các biểu thức thông thường của tìm thấy dường như không thể đối phó với \n
?
Cập nhật để trả lời cho câu trả lời cho đến nay:
OK, tôi hiểu rằng đó \n
không phải là một phần của ERE và đó là một trong những hiểu lầm của tôi nhưng find
yêu cầu hỗ trợ posix-awk
và cả hai gawk
và mawk
phù hợp \n
như mong đợi:
$ printf "f1l1\nhas newline:f2l1#f1l2 does not:f2l2#" |
mawk -F: 'BEGIN{RS="#"}; ($1~/\n/){print $1}'
f1l1
has newline
Tôi không có awk
thử nghiệm thuần túy để có lẽ POSIX awk
không khớp? Nếu không thì find
không thực sự thực hiện posix-awk
các biểu thức chính quy?
-regex
không thành công, không làm thế nào để tìm tập tin có chứa dòng mới trong tên tệp? mà bạn đã trả lời hoàn hảo :).
find . -name $'*\n*'
cồng kềnh quá không?