如何在 Linux 中列出带有完整路径的文件?

如何在 Linux 中列出带有完整路径的文件?

在 Linux 中,是否有列出完整路径和文件名的等效项Dir /s /a /b?我是 Linux 新手,没有 GUI,我想了解硬盘上的结构。

答案1

使用find命令。默认情况下,它将递归列出从当前目录开始的每个文件和文件夹,并附带完整(相对)路径。

如果您想要完整路径,请使用:

find "$PWD"

如果您想要相对路径,请使用:

find .

这里$PWD是一个包含当前工作目录的变量。

一些选项:

  • 如果您希望将其仅限于文件或文件夹,请分别使用find "$PWD" -type ffind -type d
  • find "$PWD" -maxdepth 2例如,如果您希望它在某个目录深度停止,请使用。

查找文件了解有关 GNU 的详尽手册find,它是 Linux 上的默认设置。

答案2

我今天也有同样的问题。我找到了一个名为“realpath”的命令,下面是一个例子:

$ realpath ~/.bashrc
/home/harleygolfguy/.bashrc

答案3

Linux 解决方案:

$ pwd
/home/victoria

$ find $(pwd) -maxdepth 1 -type f -not -path '*/\.*' | sort
/home/victoria/new
/home/victoria/new1
/home/victoria/new2
/home/victoria/new3
/home/victoria/new3.md
/home/victoria/new.md
/home/victoria/package.json
/home/victoria/Untitled Document 1
/home/victoria/Untitled Document 2

$ find . -maxdepth 1 -type f -not -path '*/\.*' | sed 's/^\.\///g' | sort
new
new1
new2
new3
new3.md
new.md
package.json
Untitled Document 1
Untitled Document 2

笔记:

  • .:当前文件夹
  • 删除-maxdepth 1以递归搜索
  • -type f:查找文件,而不是目录 ( d)
  • -not -path '*/\.*':不返回.hidden_files
  • sed 's/^\.\///g'./:从结果列表中删除前缀

答案4

为了完整起见,该ls -lR /命令将从根目录向下列出每个文件的名称、文件类型、文件模式位、硬链接数、所有者名称、组名、大小和每个文件(您有权访问)的时间戳。(是长列表,l即所有这些信息,R都是通过目录递归,从/文件系统的根目录开始。)

有许多参数可以使输出信息更接近dir /S /A,但我不得不承认我不知道如何翻译/B

为了获得有用的信息,我会尝试: ls -lAFGR --si /

在哪里

  • l = 长列表(如上所述)
  • A = 几乎所有文件(不包括每个目录中的 . 和 ..,但显示所有隐藏文件)
  • *F = 显示文件指示器(用于 exe 文件、/目录、 @符号链接、|FIFO、=套接字和>门之一)
  • G = 不显示群组信息(如需查看请删除)
  • R = 递归列出目录(子目录)和
  • --si = 以人类可读的形式显示文件大小,例如 1M 格式(其中 1M = 1000B)

ls可以提供目录和目录中文件的更易读的概要,因为find当文件包含在非常长的目录结构中(跨越多行)时, 的输出可能难以扫描。 结果是每个文件都单独列出(即没有目录路径信息),您可能需要返回几页/屏幕才能找到特定文件所在的目录。

此外,find 不包含 DIR 命令中的 /A 信息。我已在所展示的命令中建议了许多属性(这些属性恰好显示了 Linux 相对于某些专有系统所具有的额外实用性),但如果您阅读了 和maninfo的页面ls,您将能够看到哪些属性应该包含,哪些不应该包含。

相关内容