arrays - 将目录时间戳插入 bash 中按日期排序的数组

标签 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

但似乎没有任何效果:(

如果有人能提供帮助那就太好了:)

最佳答案

你可以做到

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]}"

关于arrays - 将目录时间戳插入 bash 中按日期排序的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177733/

相关文章:

python - 从 shell 和 python 中的行中删除字符串

将两个命令与管道组合

java - 需要帮助查找数组的值

C编程 "weird output"

java - 如何进行双数组枚举查找

linux - 如何创建具有正确 tty 设置的 execve() 子进程以运行 'vi' 但仍将 IO 重定向回父进程?

linux - 期望脚本 - 期望 2 个条件并从 bluetoothctl 中提取 MAC 添加

c - 将指针转换为 void 指针并写入它是 UB 吗?

linux - 在 shell 脚本中更改 shell 和执行命令

regex - 压缩 awk/sed 管道命令