Answers:
find -printf "%TY-%Tm-%Td %TT %p\n" | sort -n
会给你类似的东西
2014-03-31 04:10:54.8596422640 ./foo
2014-04-01 01:02:11.9635521720 ./bar
find -not -iname '*.ext'
。
如果要展平目录结构(因此按日期对所有目录中所有文件的日期进行排序,而忽略文件所在的目录),则可以使用find
@yeti建议的-approach。如果要保留目录结构,可以尝试
$ ls -ltR /path/to/directory
根据目录排序。
在bash中,shopt -s globstar
先运行。在ksh93中,set -o globstar
先运行。在zsh中,您已经设置好了。
ls -dltr **/*
如果文件太多以致超出了系统上的命令行长度限制,这将返回错误。在zsh中,可以改用以下命令:
print -rl -- **/*(Om)
假设您正在使用GNU查找,请尝试:
find $SOMEPATH -exec stat -c '%Y %n' '{}' + | sort -n
find
没有-printf
, 可以使用-exec sh -c 'printf...'
来获得很多相同的功能。这也将包括访问$(pwd)
完全限定的路径。
find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n"
ls -t --color=always "%p"\n' |\
. /dev/stdin 2>&-
这样可以避免任何参数列表问题,因为唯一ls
会收到的参数是您要列出的目录的名称。您可以使用任何您喜欢的方法进行操作。
外壳只是. sources
在|pipe
为一个shell脚本-这是相同的过程,并没有时,你可以遇到的问题execve
被调用。
在任何情况下-上面的内容只有三级,可以通过更改进行调整maxdepth
。 它也首先深入-因此您可以从逐步返回当前目录depth
。
您可能会注意到,您也得到了$LSCOLORS
-在我的机器上,它还提供了整齐打印的列以及您想要的其他所有内容ls
-或就此而言,您可以想象得到的任何内容. source.
同样,这将完成您期望做的任何事情ls
。因此,隐藏.svn
文件就像将ls
行更改为:
ls -t --color=always --hide="*svn" "%p"\n
或者,如果您想svn
在每个文件夹中查看扩展名,则./svn
可以对其进行更改,以使整个命令如下所示:
find $DIR -depth -maxdepth 3 \
-type d -readable -printf \
'printf "\\n%p\\n" ; hide=
[ "%p" = "./svn" ] && hide="*svn"
ls -t --color=always --hide="$hide" "%p"\n' |\
. /dev/stdin 2>&-
就我个人而言,我喜欢ls,-s
并且,如果您愿意,-u
它将按访问时间而不是mod时间进行排序。
此清单将列出所有清单files
,<dir>
其中最旧的是最旧的
find <dir> -type f -print0 | xargs -0 ls -ltr
而最新的修改是最重要的
find <dir> -type f -print0 | xargs -0 ls -lt
请注意,这仅在文件名列表未超过系统上命令行总长度限制的情况下才有效。
xargs -0
(在两种情况下)。 xargs -print0
等于xargs -p -r -i -n -t -0
或xargs -inprt0
或xargs -0ntrip
,这可能不是您的意思。