如何使用shell脚本按创建时间仅命令文件夹?

时间:2011-01-12 16:35:16

标签: linux

我在目录中有一些文件夹和文件。我需要按创建时间只订购文件夹。

如何使用shellscript按创建时间命令所有文件夹? 感谢

4 个答案:

答案 0 :(得分:3)

您不需要shell脚本。如果您添加ls选项,则-ltc会按创建时间对您的文件进行排序。

来自man ls

-c     with -lt: sort by, and show, ctime (time of last modification of file 
                  status information) 
       with -l: show ctime and sort by name otherwise: sort by ctime

如果您只对目录而不是常规文件感兴趣,可以通过管道切换到grep

来过滤结果
ls -ltc | grep ^d

注意:^d表示仅显示以字母d开头的行,在ls -l输出的情况下表示目录。

更新

your answer开始,您似乎只对最新文件的文件名感兴趣。试试这个:

ls -ltc | awk '/^d/{print $NF; exit}'

注意:

  • /^d/:过滤以'd'开头的行
  • print $NF:打印最后一栏
  • ; exit:在第一场比赛后立即退出

答案 1 :(得分:0)

ls -d -t

下次,RTM

答案 2 :(得分:0)

我宁愿不在脚本中使用ls;改为使用find:

find . -mindepth 1 -maxdepth 1 -type d -printf "%C@ %f\n" | 
    sort -n | 
    cut -d\  -f2-

选项“-mindepth 1”就在那里因为我们不想要“。”在输出中。

或者,你也可以使用stat:

for dir in */; do
    stat -c "%Z $n" "$dir"
done | sort -n | cut -d\  -f2-

答案 3 :(得分:0)

感谢所有答案!

我使用以下命令解决了我的问题:

按创作时间排序:ls -clh | grep ^d | head -1 | rev | cut -d' ' -f1 | rev

按修改时间排序:ls -tlh | grep ^d | head -1 | rev | cut -d' ' -f1 | rev