【发布时间】:2014-03-14 00:05:42
【问题描述】:
我目前正在编写一个 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 上的默认行为吗?
【问题讨论】:
-
不确定您使用什么“常规
ls命令”,但Unix 上通常的ls命令仅在文件超过一年时才显示年份...与@ 没有区别987654335@ 行为。 -
根据 gnu.org/software/coreutils/manual/html_node/… ,如果日期在未来或超过 6 个月,时间戳仅包括年份。我猜你需要根据格式以不同的方式处理行。
-
另一种选择是使用 WinSCP,它具有用于 PowerShell 的 .NET 库。
RemoteFileInfo类具有 LastWriteTime 属性。 -
根据您需要支持的 PowerShell 版本,我认为您还可以使用 System.Net.FtpWebRequest 类,将 Method 属性设置为
ListDirectory或ListDirectoryDetails值[msdn.microsoft.com/en-us/library/… 输入,列出您的 FTP 目录。 -
谢谢,我结束了使用 WinSCP,因为它总是显示文件的时间,而 sftp 将停止显示上一年文件的时间。
标签: linux windows powershell cygwin