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 đó \nkhô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 findyêu cầu hỗ trợ posix-awkvà cả hai gawkvà mawkphù hợp \nnhư 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ó awkthử nghiệm thuần túy để có lẽ POSIX awkkhông khớp? Nếu không thì findkhông thực sự thực hiện posix-awkcác biểu thức chính quy?
-regexkhô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?