将目录时间戳推送到按bash中的日期排序的数组中

时间:2016-10-21 13:18:05

标签: arrays linux bash unix timestamp

我有以下目录:

1/
2/
3/
4/
5/
6/
7/
...

我想遍历这个目录列表并将它们保存到按修改日期排序的数组中

array[
3, #oldest timestamp
4,
5,
8,
1, #newest timestamp 
]

之后我想访问数组值,如:array [0]

bash怎么可能?我尝试了几样这样的事情:

ARRAY=()
for d in */; do
ARRAY+=($[$(date +%s)-$(stat --printf "%Y" "$d")])
done

但似乎没有任何作用:(

如果有人可以提供帮助,那会很好。)

2 个答案:

答案 0 :(得分:1)

你可以试试这个;

ARRAY=($(find . ! -path . -type d -printf "%T@ %Tc %f\n"  | awk '{print $NF}'))

答案 1 :(得分:1)

你可以做到

cd /path/to/your/dir
string="$(find . -maxdepth 1 -type d -printf '%T@ %p\n' | sort -k 1nr | sed 's/^[^ ]* //' | tr -d './' )"
IFS=$'\n' read -rd '' -a array <<< "$string"

然后像这样访问数组的元素:

echo "${array[1]}"