Unix 上 bash 命令“ls -lad”的 DOS 对应命令是什么?

Unix 上 bash 命令“ls -lad”的 DOS 对应命令是什么?

ls -ladUnix 上bash 命令的 DOS 对应命令是什么?

Windows 上的命令提示符 (cmd.exe) 中的“dir”命令通常被认为相当于 Unix/Linux 上 bash 的“ls”命令。但是,“dir”缺少“ls”的“-d”选项的功能。“-d”选项将目录视为纯文件,并阻止显示其子文件和子目录。

ls -lad ITEM
  1. 基本上,我需要的是给定 ITEM 的存在和类型。
  2. 至于类型,我需要知道它是一个目录、一个常规文件还是一个链接。
  3. 如果它是一个目录,我不希望显示它的子文件或子目录。
  4. 如果它是一个链接,我需要知道目标。

是否有任何 DOS 命令(甚至是 PowerShell 命令)具有这些功能(1)至(4)?

dir ITEM /a
attrib ITEM

DOS 上的“attrib”命令也会告知给定 ITEM 的存在;如果它是一个目录,“attrib”不会显示其子文件和子目录。但是,“attrib”无法告知它是目录、常规文件还是链接。

答案1

bash 命令的 DOS 对应命令是什么ls -lad

没有直接等效的。当然,您可以安装 Cygwin 或 Windows Subsystem for Linux 并ls -lad直接运行。

您还可以创建一个批处理文件,它可以完成您想要的大部分操作。以下是一些提示。

检查文件是否存在:

if exist filename (
  echo filename exists
  )

检查文件是否是目录:

if exists filename\nul (
  echo directory
) else (
  echo file
)

检查文件是否为链接:

dir /a:l filename | find "<SYMLINK>" >nul && echo file symbolic link

检查目录是否为链接:

dir /a:l filename | find "<SYMLINKD>" >nul && echo directory symbolic link

获取文件链接的目标:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename ^| find "<SYMLINK">`) do @echo %i

获取目录链接的目标:

for /f "usebackq delims=[] tokens=2" %i in (`dir /a:l filename* ^| find "<SYMLINKD>"`) do @echo %i

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 目录- 显示文件和子文件夹的列表。
  • 寻找- 在文件中搜索文本字符串并显示找到该字符串的所有行。
  • 对于/f- 循环命令:针对一组文件 - 有条件地对每个项目执行命令。
  • 如果- 有条件地执行命令。

相关内容