linux 相当于 dir /b /s /a:-D (递归打印所有文件的完整路径)

kur*_*ama 2 linux ls shell find

我今天刚刚迁移到 linux,我想知道如何使用 ls 命令来做到这一点(你最擅长的是什么)。这个想法是获取目录中包含完整路径的所有文件,包括子目录......我使用的 cmd 命令是:

dir /b /s /a:-D
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 5

据我所知,你的dir命令下降到子目录(/S),跳过标题和摘要(/B)和省略文件,它们的d irectoryttribute设置为(/A:-D

在 Linux 中执行此操作的可移植方式是通过find命令 - 默认情况下它会下降到子目录中,并且可以通过添加来省略目录-not -type d!可以用作 的同义词-not

默认情况下,它报告相对于起点的路径,因此要获取绝对路径,您可以使用 shell 的当前工作目录变量PWD

find "$PWD" -not -type d
Run Code Online (Sandbox Code Playgroud)

如果您使用的 shell 支持递归模式匹配(又名“globstar”)和 glob 限定符,还有其他选项 -zsh例如,您可以这样做

ls -1d **/*(^D:A)
Run Code Online (Sandbox Code Playgroud)

或者干脆

printf '%s\n' **/*(^D:A)
Run Code Online (Sandbox Code Playgroud)

您可能还需要考虑您是否真的想要“非目录”或“普通文件”:

find "$PWD" -type f
Run Code Online (Sandbox Code Playgroud)

或 (zsh)

printf '%s\n' **/*(.:A)
Run Code Online (Sandbox Code Playgroud)

  • @schily 问题仅询问 Linux,而答案仅声称针对 Linux。 (3认同)