我今天刚刚迁移到 Linux,我想知道如何使用 ls 命令执行此操作(ar 你认为最好的)。这个想法是获取目录中具有完整路径的所有文件,包括子目录...我使用的cmd命令是:
dir /b /s /a:-D
答案1
据我所知,您的dir
命令会下降到子目录(/S
),跳过标题和摘要(/B
)并省略其文件d目录A属性已设置 ( /A:-D
)
在 Linux 中执行此操作的可移植方法是通过find
命令 - 默认情况下它会进入子目录,并且可以通过添加来省略目录-not -type d
(!
可以用作 的同义词-not
)
默认情况下,它报告相对于起始点的路径,因此要获取绝对路径,您可以使用 shell 的当前工作目录变量PWD
:
find "$PWD" -not -type d
如果您使用的 shell 支持递归模式匹配(又名“globstar”)和 glob 限定符,还有其他选项 - 例如zsh
您可以这样做
ls -1d **/*(^D:A)
或者简单地
printf '%s\n' **/*(^D:A)
您可能还需要考虑您是否真的想要“非目录”或“纯文件”:
find "$PWD" -type f
或(zsh)
printf '%s\n' **/*(.:A)