gpt4 book ai didi

Bash/DOS/PowerShell 脚本来列出文件的最新版本?

转载 作者:行者123 更新时间:2023-11-29 09:02:12 25 4
gpt4 key购买 nike

我们有一份(假设有 50 份)报告的列表,这些报告会根据特定条件转储到不同的文件夹中。所有报告都有标准名称,例如。 D099C.LIS、D18A0.LIS等

有时一份报告最多可以存在于 5 个不同的位置,我需要生成一份包含每个报告的最新版本的所有位置的列表。

我可以使用代码轻松完成,或者将“dir”或“ls”输出重定向到文本文件,然后在 Excel 中对其进行操作,但我更喜欢使用 DOS 的更简单(希望是单行)解决方案、bash 或 PowerShell。

到目前为止,我在 PowerShell 中想到的最好的(我使用 bash 做过类似的事情)是:

ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime

这将递归列出所有扩展名为 *.lis 的文件,然后按名称 (asc) 和日期 (desc) 对其进行排序,然后显示目录、名称和日期。

这给出了这种输出:

C:\reports\LESE            D057A.LIS                  28/01/2009 09:00:43
C:\reports\JCSW D057A.LIS 27/01/2009 10:50:21
C:\reports\ALID D075A.LIS 04/02/2009 12:34:12
C:\reports\JCSW D075B.LIS 05/02/2009 10:07:15
C:\reports\ALID D075B.LIS 30/01/2009 09:14:57
C:\reports\BMA3 D081A.LIS 01/09/2008 14:51:36

我现在显然需要做的是删除不是最新版本的文件,以便输出看起来像这样(还不太担心格式化):

C:\reports\LESE            D057A.LIS                  28/01/2009 09:00:43
C:\reports\JCSW D075B.LIS 05/02/2009 10:07:15
C:\reports\BMA3 D081A.LIS 01/09/2008 14:51:36

有人有什么想法吗?

[编辑]这个问题的一些好主意和答案。不幸的是,我不能将所有标记为已接受,但 EBGreen 的(编辑过的)答案无需修改即可工作。我将在验证它们时在此处添加工作解决方案。

狂欢:

 ls -lR --time-style=long-iso | awk 'BEGIN{OFS="\t"}{print $5,$6,$7,$8}' | grep ".LIS" | sort -k4 -k2r -k3r | uniq -f3
ls -lR --time-style=long-iso | awk 'BEGIN{OFS="\t"}{print $5,$6,$7,$8}' | grep ".LIS" | sort -k4 -k2r -k3r | awk '!x[$4]++'

PowerShell:

  ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime | Group-Object Name | %{$_.Group | Select -first 1}
ls -r . *.lis | sort -desc LastWriteTime | group Name | %{$_.Group[0]} | ft Directory,Name,LastWriteTime
ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | unique | ft Directory,Name,LastWriteTime

最佳答案

ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime | Group-Object Name | %{$_.Group | Select -first 1}

关于Bash/DOS/PowerShell 脚本来列出文件的最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/520437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com