I'm trying to store the files listing into an array and then loop through the array again.
Below is what I get when I run ls -ls
command from the console.
total 40
36 -rwxrwxr-x 1 amit amit 36720 2012-03-31 12:19 1.txt
4 -rwxrwxr-x 1 amit amit 1318 2012-03-31 14:49 2.txt
The following bash script I've written to store the above data into a bash array.
i=0
ls -ls | while read line
do
array[ $i ]="$line"
(( i++ ))
done
But when I echo $array
, I get nothing!
FYI, I run the script this way: ./bashscript.sh
Try with:
In your version, the
while
runs in a subshell, the environment variables you modify in the loop are not visible outside it.(Do keep in mind that parsing the output of
ls
is generally not a good idea at all.)This might work for you:
Here's a variant that lets you use a regex pattern for initial filtering, change the regex to be get the filtering you desire.
I'd use
And then if you need data about the file, such as size, use the
stat
command on each file.Running any shell command inside
$(...)
will help to store the output in a variable. So using that we can convert the files to array withIFS
.