寻找返回目录中最新文件的命令。

没有看到ls的limit参数…


当前回答

使用R递归选项..你可以认为这是对好的答案的增强

ls -arRtlh | tail -50

其他回答

所有这些ls/tail解决方案都非常适用于目录中的文件—忽略子目录。

为了在搜索中包含所有文件(递归地),可以使用find。Gioele建议对格式化的查找输出进行排序。但是要小心使用空格(他的建议不适用于空格)。

这应该适用于所有文件名:

find $DIR -type f -printf "%T@ %p\n" | sort -n | sed -r 's/^[0-9.]+\s+//' | tail -n 1 | xargs -I{} ls -l "{}"

这一分类由时,见人发现:

%Ak    File's  last  access  time in the format specified by k, which is either `@' or a directive for the C `strftime' function.  The possible values for k are listed below; some of them might not be available on all systems, due to differences in `strftime' between systems.
       @      seconds since Jan. 1, 1970, 00:00 GMT, with fractional part.
%Ck    File's last status change time in the format specified by k, which is the same as for %A.
%Tk    File's last modification time in the format specified by k, which is the same as for %A.

用%C替换%T,按ctime排序。

递归地:

find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

我也需要这样做,我找到了这些命令。这些对我来说很有用:

如果你想要最后一个文件的创建日期在文件夹(访问时间):

ls -Aru | tail -n 1  

如果你想要最后一个文件的内容有变化(修改时间):

ls -Art | tail -n 1  

只有Bash内置程序,紧跟BashFAQ/003:

shopt -s nullglob

for f in * .*; do
    [[ -d $f ]] && continue
    [[ $f -nt $latest ]] && latest=$f
done

printf '%s\n' "$latest"
ls -Art | tail -n 1

这将返回最新修改的文件或目录。不是很优雅,但是很好用。

使用国旗:

-A列出所有文件。和. .

-r在排序时倒序

-t按时间排序,latest在前