我创建了一个.txt
文件,但现在我忘记了保存它的位置以及它的文件名。所以我的问题是:有没有方法可以.txt
按创建日期的降序过滤文件?我目前正在使用 32 位 Ubuntu 12.04。
答案1
扩展@soulsource的评论,你需要使用寻找命令最基本的用法是查找机器上所有以 .txt 结尾的文件,以下命令将从根目录开始深入文件系统:
find / -type f -iname '*.txt'
现在,如果您知道将文件保存在特定目录中,例如您的主目录,但忘记了哪个子目录,您可以通过更改路径来加快查找速度:
find ~/ -type f -iname '*.txt'
现在,您只需将|
结果文件通过ls
管道传输到
find ~/ -type f -iname '*.txt' | xargs ls -td1
如果你收到大量文件,你始终可以通过再次将其传输到来限制响应数量头。例如,如果您只对最近的 10 条结果感兴趣,则可以使用:
find ~/ -type f -iname '*.txt' | xargs ls -td1 | head -n10
需要注意的一点find
是,默认情况下它不遵循符号链接,如果像我一样,您的主目录中有几个符号链接并且也想检查它们,您需要使用-follow
查找选项。
find ~/ -type f -iname '*.txt' -follow | xargs ls -td1 | head -n10
答案2
find 命令可以按修改时间进行过滤,例如
find path/to/some/directory -type f -name *.txt -mtime 5
这将显示 path/to/some/directory 中过去 5*24 小时内修改过的所有文件。它们不会按创建日期排序,但是——假设您最近没有修改太多文本文件——使用足够严格的 mtime 过滤器,返回的文件列表应该非常小。此命令不会按日期排序,而是仅有的显示最近修改的文件...
如果有必要,您可以按照 AJefferiss 的描述,将其与管道结合到 xargs ls 中来添加排序。
答案3
您可以*.txt
在终端中使用以下命令查找文件并按修改日期对其进行排序终端:
find /path/to/search -type f -iname '*.txt' -printf "%-.22T+ %Tx %.8TX %p\n" | sort | awk '{print $2 "\t" $3 "\t" $4}'
或者:
cd /path/to/search
find . -type f -iname '*.txt' -printf "%-.22T+ %Tx %.8TX %p\n" | sort | awk '{print $2 "\t" $3 "\t" $4}'
对于最后 10 个修改的*.txt
文件使用:
find . -type f -iname '*.txt' -printf "%-.22T+ %Tx %.8TX %p\n" | sort | awk '{print $2 "\t" $3 "\t" $4}' | tail