Tôi đang cố gắng tìm kiếm các tệp bằng cách sử dụng find
và đặt các tệp đó vào một mảng Bash để tôi có thể thực hiện các thao tác khác trên chúng (ví dụ: ls
hoặc grep
chúng). Nhưng tôi không thể hiểu tại sao readarray
không đọc find
đầu ra khi nó được đưa vào.
Nói rằng tôi có hai tệp trong thư mục hiện tại file1.txt
và file2.txt
. Vì vậy, find
đầu ra như sau:
$ find . -name "file*"
./file1.txt
./file2.txt
Vì vậy, tôi muốn chuyển nó thành một mảng có hai phần tử là các chuỗi "./file1.txt"
và "./file2.txt"
(không có dấu ngoặc kép, rõ ràng).
Tôi đã thử điều này, trong số một vài thứ khác:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Như bạn có thể thấy từ echo
đầu ra, mảng của tôi trống.
Vậy chính xác thì tôi đang làm gì sai ở đây? Tại sao readarray
không đọc find
đầu ra là đầu vào tiêu chuẩn của nó và đưa các chuỗi đó vào mảng?
readarray -d '' < <(find your_args -print0)