0

我有一个这样的 bash 脚本:

for d in /home/test/*
    do
    echo $d
done

输出如下:

/home/test/newer dir
/home/test/oldest dir

我想按创建时间对文件夹进行排序,以便“最旧的目录”目录首先出现在列表中。我试过 ls 和 tree 变体无济于事。

例如,

for d in `ls -d -c -1 $PWD/*`

回报:

/home/test/oldest
dir
/home/test/newer
dir

非常接近,但它不尊重目录名称中的空格。我的问题,我如何将最旧的目录放在顶部并支持空格?

4

2 回答 2

1
ls -d -c $PWD/* | while read line
  do echo "$line"
done
于 2013-04-19T23:03:35.127 回答
0

另一种技术,一种 Schwartzian 变换:

stat -c $'%Z\t%n' /home/test/* | sort -n | cut -f2- |
while IFS= read -r filename; do
    # ...

对于包含换行符的文件名,此解决方案很脆弱。

于 2013-04-20T16:23:15.340 回答