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

Luk*_*ett 30 linux

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

slh*_*hck 35

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

如果您想要完整路径,请使用:find "$(pwd)"

  • 如果您只想将其限制为文件或文件夹,请分别使用find -type ffind -type d
  • 例如,如果您希望它在某个目录深度处停止,请使用find -maxdepth 2

阅读Find Files以获取关于 GNU 的详尽手册find,这是 Linux 上的默认设置。

  • @LukePuplett `pwd` 将打印您当前的工作目录。如果你用`$()` 包含一个命令,它的输出(即你的工作目录)将在外部命令运行之前被替换。例如,`find` 实际上不会看到`find $(pwd)`,而是`find /home/luke/`。这称为命令替换。 (4认同)
  • 为什么不‘找到“$PWD”’? (2认同)

小智 7

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

$ realpath ~/.bashrc
/home/harleygolfguy/.bashrc
Run Code Online (Sandbox Code Playgroud)


Vic*_*art 6

$ 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
Run Code Online (Sandbox Code Playgroud)

笔记:

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


小智 6

这里的大多数答案都提到 find 或只是 ls 或 ll 以及 pwd 但使用 find 。

这是使用 ll

plaj@her-dta-01:~> ll -d $PWD/*
drwxr-xr-x 2 plaj users 4096 Jul  3 10:27 /home/plaj/bin
-rw-r--r-- 1 plaj users  203 Aug 19 17:21 /home/plaj/file.json
drwxr-xr-x 5 plaj users 4096 Aug 12 08:06 /home/plaj/file2
drwxr-xr-x 6 plaj users 4096 Sep  2 09:37 /home/plaj/file3
drwxr-xr-x 5 plaj users 4096 Aug 12 15:15 /home/plaj/file4
-rw-r--r-- 1 plaj users  566 Sep  2 11:10 /home/plaj/etcfile.log
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的,它不会递归到超过 1 层深度的子目录 (3认同)
  • 如果路径中有空格,则需要引号 `ll -d "$PWD"/*` (2认同)

mca*_*lex 5

为完整起见,该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 通过某个专有系统获得的额外有用性),但是如果您阅读man和 上的info页面ls,您将能够看到什么包括与否。