在bash脚本

时间:2017-03-31 07:18:37

标签: arrays bash sorting scripting

我是bash脚本的新手。我的目录中有一个文件列表,我想将它们存储到一个数组中,然后在数组中对它们进行排序。我已将文件列表存储到我的数组中;但是,我无法订购它们。

  for file in test_file*.txt;
  do
    TEST_FILE="${file##*/}"
    arrayname[index]=$TEST_FILE
    index=$(expr $index + 1)
  done

将所有以test_file开头并以.txt结尾的文件存储到我的数组中。我觉得棘手的部分就是整理它。我已经做了一些挖掘,但我找不到解决方案。

如果我以后运行编译python代码,我会做一个循环并调用

python3 test.py "$arrayname[n]"

并增加n?

我当前的目录包含这些文件,它存储在数组" arrayname []"形式如下:

 test_file0.txt, test_file12.txt, test_file11.txt, test_file10.txt, 

我正在尝试对其进行排序并将其存储到另一个数组中,因此新数组的顺序如下:

 test_file0.txt, test_file10.txt, test_file11.txt, test_file12.txt

1 个答案:

答案 0 :(得分:1)

如果您的sort知道-V(GNU排序):

readarray -t files < <(printf "%s\n" test_file* | sort -V)
printf "%s\n" "${files[@]}"

#bash 4.4+
readarray -t -d '' files1 < <(find . -maxdepth 1 -name test_file\* -print0 | sort -zV)
printf "%s\n" "${files1[@]}"