Saya mencoba mencari file menggunakan find
, dan meletakkan file-file itu ke dalam array Bash sehingga saya bisa melakukan operasi lain pada mereka (misalnya ls
atau grep
mereka). Tapi saya tidak tahu mengapa readarray
tidak membaca find
output karena disalurkan ke dalamnya.
Katakanlah saya punya dua file di direktori saat ini, file1.txt
dan file2.txt
. Jadi find
outputnya adalah sebagai berikut:
$ find . -name "file*"
./file1.txt
./file2.txt
Jadi saya ingin menyalurkannya ke dalam array yang dua elemennya adalah string "./file1.txt"
dan "./file2.txt"
(tanpa tanda kutip, jelas).
Saya sudah mencoba ini, di antara beberapa hal lain:
$ declare -a FILES
$ find . -name "file*" | readarray FILES
$ echo "${FILES[@]}"; echo "${#FILES[@]}"
0
Seperti yang Anda lihat dari echo
output, array saya kosong.
Jadi apa yang sebenarnya saya lakukan salah di sini? Mengapa readarray
tidak membaca find
keluaran sebagai input standar dan memasukkan string ke dalam array?
readarray -d '' < <(find your_args -print0)