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

时间:2014-03-14 00:05:42

标签: linux windows powershell cygwin

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

我遇到的问题是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

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

ls [-1aflnrSt] [path]              Display remote directory listing

我也尝试过使用psftp,它提供的格式与年份相同。

我的问题是如何确保日期显示年份?这将是理想的解决方案。但如果无法显示,是否可以安全地假设该文件来自当前年份,并且前几年的任何文件都会明确指定年份?这是ls优于sftp的默认行为吗?

1 个答案:

答案 0 :(得分:1)

方法: I.您可以将日期解析为字符串,然后尝试连续查找4个数字。还添加对containig“ 19”,“ 20”或$ targetYear的检查。

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

III。最后,在我的实践中,我使用了远程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”。

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