我需要一个目录中所有文件的所有文件名的长(垂直)列表。
如何从ls -la
( ll
) 列表中仅获取文件名?
只有名字,不是:
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename1
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename2
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename3
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename4
drwxr-xr-x 9 USER GROUP 4096 Jul 20 10:30 filename5
相反,我只需要:
filename1
filename2
filename3
filename4
filename5
答案1
仅打印文件名是ls
.当您添加时,-l
您是在说您想要“长格式”输出。如果你只是删除-l
我认为这会给你你想要的。您可以保留-a
包含“隐藏”文件
另外,正如 Stéphane 提到的,-1
如果您仍然希望每个文件都在自己的行上,那么您可以添加-1
,当重定向到文件或通过管道传输到另一个命令时,无论有或没有,都会发生这种情况。
如果要将其保存到文件中,可以像任何命令一样使用>
或运算符。>>
看重定向和shell 的控制和重定向运算符是什么?
答案2
>
您可以使用或将输出直接重定向到文件>>
。
例如,ls -l > somefile.txt
将创建一个名为 的文件,somefile.txt
其中包含ls -l
.但要小心,因为单身人士>
会覆盖您重定向到的文件中的所有内容。使用>>
意志附加输出到您选择写入的文件。
编辑: ls -1 >> somefile.txt
可能是您正在寻找的命令。为了全部文件,ls -1a >> somefile.txt
.
答案3
将 ls 输出通过管道传输到 cat 似乎可以在我的 bash (Konsole) shell 中工作。这是我的系统的输出。
$ ls | cat
bin
boot
cdrom
dev
etc
home
initrd.img
initrd.img.old
lib
lib32
lib64
libx32
lost+found
media
mnt
opt
proc
root
run
sbin
snap
srv
sys
tmp
usr
var
vmlinuz
vmlinuz.old
$
该ls -1
命令在输出中保留彩色文本,而上面基于 cat 的命令会丢失颜色。