轻松按顺序递归获取最近修改的文件

轻松按顺序递归获取最近修改的文件

使用 Windows 时是否有可以执行的命令行字符串来显示最近编辑的记事本文件?

很多时候,我不知道我需要的文件的名称...但我知道我在过去 3 天内编辑过它。在 Windows 中,我可以用什么高效的方式执行这样的操作?

答案1

轻松按顺序递归获取最近修改的文件

使用 PowerShell 执行此操作的一种方法是...

  1. 使用获取子项获取文件.txt扩展名的递归列表

  2. 通过管道将其输送到ForEach 对象循环并使用 分组和子表达式运算符返回 LastWriteTime属性值,后跟逗号和每个文件的完整路径文件名 - 按值降序排序 LastWriteTime

  3. 随着#1#2结果是一个变量,通过循环将其传递给分裂(),以逗号为分隔符,仅返回[1]迭代值的第 2 个索引(即)并保留时间戳的降序,但仅返回完整路径文件名。

电源外壳

$Src = "C:\YourFolder";
$z = (Get-Childitem -Path $Src -include "*.txt" -File -Recurse | % {"$($_.LastWriteTime), $($_.FullName)"}) | Sort-Object -Descending;
$z | % {$_.Split(",")[1]};

示例结构

C:\Users\user\Desktop\Dir\A
C:\Users\user\Desktop\Dir\B
C:\Users\user\Desktop\Dir\Test.txt
C:\Users\user\Desktop\Dir\Test2.txt
C:\Users\user\Desktop\Dir\Test3.txt
C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
C:\Users\user\Desktop\Dir\A\blah.txt
C:\Users\user\Desktop\Dir\A\Test4.txt
C:\Users\user\Desktop\Dir\B\FLLtest.txt
C:\Users\user\Desktop\Dir\B\FLLtest2.txt

命令输出示例(包含日期时间)

PS C:\Users\user> (Get-Childitem -Path $Src -include "*.txt" -File -Recurse | % {"$($_.LastWriteTime), $($_.FullName)"}) | Sort-Object -Descending;
12/09/2019 18:14:09, C:\Users\user\Desktop\Dir\A\Test4.txt
12/08/2019 20:27:26, C:\Users\user\Desktop\Dir\Test2.txt
12/03/2019 23:55:50, C:\Users\user\Desktop\Dir\Test3.txt
11/02/2019 12:51:35, C:\Users\user\Desktop\Dir\B\FLLtest2.txt
11/02/2019 12:49:09, C:\Users\user\Desktop\Dir\B\FLLtest.txt
07/29/2019 22:38:33, C:\Users\user\Desktop\Dir\A\blah.txt
07/29/2019 22:38:17, C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
06/21/2019 23:38:01, C:\Users\user\Desktop\Dir\Test.txt

完整脚本输出示例

 C:\Users\user\Desktop\Dir\A\Test4.txt
 C:\Users\user\Desktop\Dir\Test2.txt
 C:\Users\user\Desktop\Dir\Test3.txt
 C:\Users\user\Desktop\Dir\B\FLLtest2.txt
 C:\Users\user\Desktop\Dir\B\FLLtest.txt
 C:\Users\user\Desktop\Dir\A\blah.txt
 C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
 C:\Users\user\Desktop\Dir\Test.txt

支持资源

答案2


这是一个简单的选项,可以做到这一点/或仅适用于本地/文件夹列表的命令行:


/o:d = order by date (old first) || is the same /od
/o-d = order by date (reverse -) || is the same /o:-d
/b   = basic out put (name only) 
/s   = recursively

:: - - - - - - - - - - - - - - - - - - - - - - - - - - ::

rem./  you can use any options...

dir /o:-d /b /s
dir /o-d /b /s 
dir /o-d/b/s
dir/o-d/b/s

相关内容