对于高级用户来说,这似乎是一个简单的问题,但我尝试过但没有成功。
我想使用dir
命令在终端中获取文件列表,其格式如下:每行只有一个文件,包含完整路径,但没有其他信息,例如:
/home/user/beginner/file1.txt
/media/beginner/movies/video1.mp4
现在我发现我将自动获得此输出,而无需使用外部驱动器文件夹上的开关并将输出定向到文件中。但在硬盘上,它将默认为“列中仅名称”样式。
如何强制 dir 使用我想要的输出格式?
对于高级用户来说,这似乎是一个简单的问题,但我尝试过但没有成功。
我想使用dir
命令在终端中获取文件列表,其格式如下:每行只有一个文件,包含完整路径,但没有其他信息,例如:
/home/user/beginner/file1.txt
/media/beginner/movies/video1.mp4
现在我发现我将自动获得此输出,而无需使用外部驱动器文件夹上的开关并将输出定向到文件中。但在硬盘上,它将默认为“列中仅名称”样式。
如何强制 dir 使用我想要的输出格式?
这将完全执行此操作
dir
,但它将打印完整路径而不是相对路径,包括目录、文件、符号链接并排除隐藏条目:find . -maxdepth 1 ! -name '.*' -exec [...] {} +
: 将递归地列出当前工作目录中的每个目录/文件/符号链接,不包括隐藏条目,将递归深度限制为 1 级(即当前工作目录),将输出中的每个条目作为参数传递给[...]
;realpath -s
:将打印条目的完整路径,而不解析符号链接的路径由于这将根据 的输出打印条目,因此我将打印NUL 分隔每个条目
find
的输出,并且我将使用 对输出进行排序,将的输出传递给(以处理包含换行符的文件名的边缘情况) ,由于现在该命令已经变得相当冗长,为了方便起见,我还将它放在一个别名中:realpath
LC_COLLATE=C sort -z
sort
xargs -0 printf "%s\n"
您可以阅读链接命令。首先运行find命令获取当前目录下的文件。然后将该列表通过管道传递给 readlink。例如:
它将在一列中列出所有文件。如果您想要目录而不是文件,请
- type d
在 find 命令中使用。有点乱,但我在一行中得到了它:
它将每行分成
dir -1
单独的“行”,然后迭代数组,将echo
of附加$PWD
到每xargs
行。尝试:
ls -Alxh1
等于:
参见man ls