Tib*_* C. 7 command-line files search productivity
这可能是一个通用的 Linux 问题,但我会在这里试一试。
我经常需要一个最近修改过的文件列表,目前我正在通过管道ls
输出到grep
今天或某个小时的grep
参数,但我需要经常更改参数以获取更新的列表,这有点效率低下。
是否有一个简单的命令来列出某个路径上最后修改的文件?
hee*_*ayl 13
要递归地从某个目录中查找最后 5 个修改过的文件,请从该目录运行:
find . -type f -printf '%T@ %p\n' | sort -k1,1nr | head -5
Run Code Online (Sandbox Code Playgroud)
%T@
带有-printf
谓词 offind
将获得自纪元以来文件的修改时间,%p
将打印文件名
sort -k1,1nr
将sort
根据纪元时间在数字上反转结果
head -5
会给我们最后修改的五个文件名
如果您只想在当前目录中搜索(而不是递归),请使用stat
:
stat -c '%Y %n' * | sort -k1,1nr | head -5
Run Code Online (Sandbox Code Playgroud)
或者find
:
find . -maxdepth 1 -type f -printf '%T@ %p\n' | sort -k1,1nr | head -5
Run Code Online (Sandbox Code Playgroud)
检查man find
并man stat
获得更多想法。
小智 8
其实很简单。要获取 currant 目录中的最新文件:
ls -Art | tail -n 2
要获取另一个目录中的最新文件,例如 /opt/spark/ 中:
ls /opt/spark/ -Art | tail -n 1
这是我在集群上使用它时的情况:
aa23916@picard03:/opt/spark/applicationHistory$ ls -Art | tail -n 2
app-20180124162809-0004
app-20180124163207-0005.inprogress
Run Code Online (Sandbox Code Playgroud)
简单又容易:)
下面的脚本递归地列出了目录中的所有文件,这些文件是在比任意时间更早编辑的。此外,它还显示自上次编辑以来的时间跨度。
它可以与以下命令一起使用:
findrecent <directory> <time(in hours)>
Run Code Online (Sandbox Code Playgroud)
如下所示:
在此示例中,列出了桌面上 36 小时内编辑的所有文件。
findrecent <directory> <time(in hours)>
Run Code Online (Sandbox Code Playgroud)
~/bin
findrecent
为~/bin