kur*_*ama 2 linux ls shell find
我今天刚刚迁移到 linux,我想知道如何使用 ls 命令来做到这一点(你最擅长的是什么)。这个想法是获取目录中包含完整路径的所有文件,包括子目录......我使用的 cmd 命令是:
dir /b /s /a:-D
Run Code Online (Sandbox Code Playgroud)
据我所知,你的dir命令下降到子目录(/S),跳过标题和摘要(/B)和省略文件,它们的d irectory一ttribute设置为(/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)