使用 ls 从 SFTP 服务器获取文件的时间戳

Dan*_*ran 7 linux windows powershell cygwin

我目前正在编写一个 Powershell 脚本,它检索 SFTP 服务器上目录中所有文件的时间戳并将其写入文件。我正在使用sftpcygwin 附带的实用程序连接到服务器。

我遇到的问题是该ls命令没有在时间戳中显示年份。这是输出的示例:

sftp> ls -lt
-rw-r--r--   1 9665     9665          358 Mar 13 10:05 file.txt
-rw-r--r--   1 9665     9665          217 Mar 13 10:00 file2.txt
Run Code Online (Sandbox Code Playgroud)

我似乎无法访问任何强制ls显示常规ls命令年份的标志。这些是我可以通过以下方式获得的选项:

ls [-1aflnrSt] [path]              Display remote directory listing
Run Code Online (Sandbox Code Playgroud)

我也试过使用psftp它,它提供了没有年份的相同格式。

我的问题是如何确保年份显示在日期中?这将是理想的解决方案。但是,如果无法显示,是否可以简单地假设该文件来自当前年份,并且前几年的任何文件都将具体指定年份?这是lssftp的默认行为吗?

Vas*_*rov 1

实现方法: I. 您可以解析字符串中的日期并尝试查找连续的 4 个数字。还要添加对包含“19”、“20”或 $targetYear 的检查。

二. 您也可以使用“ls -l --full-time”命令显示年份。

三.最后,在我使用远程 Linux 服务器中的文件的实践中,我使用了:

  1. 将远程目录安装为磁盘“New-PSDrive -name $diskLiteral -psprovider FileSystem -Root $outsightFolder -Credential $cred”
  2. 获取目录“Get-ChildItem ($diskLiteral + $subfolder) -Force |Where-Object $_.CreationTime -ge $targetDate”中的文件排序列表
  3. 卸载目录“Remove-PSDrive -Name $diskLiteral -Force -PSProvider FileSystem”。

    在第二步中,您可以根据需要添加任何排序,选择有关文件和格式表的任何信息(如果它需要数据表示的表格形式)。