在Linux中每行列出一个文件名
Contents
1. 概述
在 Linux 命令行下工作时,列出目录下的文件可能是最常见的操作之一。
有时,我们希望获取特定格式的文件列表——例如,每行一个文件。
在这个快速教程中,我们将看到如何实现这一点。
2. 使用ls命令和*-1*选项
当我们想要列出目录中的文件时,*ls *命令可能是我们能想到的第一个命令。但是,如果我们在没有任何选项的情况下运行该命令,则 ls命令将在一行中输出文件名。一个例子将清楚地解释它:
$ ls
aDir file1.txt file2.txt file3.txt
当然,我们知道常用的*-l选项可以让ls*将每个文件名打印在一行中。确实如此。但是,其他信息,例如权限和文件所有者,将与文件名一起出现在输出中:
$ ls -l
total 0
drwxr-xr-x 2 kent kent 40 Sep 30 21:07 aDir
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file1.txt
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file2.txt
-rw-r--r-- 1 kent kent 0 Sep 30 21:07 file3.txt
如果我们只想查看文件名和每行一个文件,我们可以 使用-1选项执行ls*命令*:
$ ls -1
aDir
file1.txt
file2.txt
file3.txt
如果我们想显示隐藏文件 (也称为 dot-files ),我们可以在上面的命令中添加*-a*选项:
$ ls -1a
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
3. 选择终端以外的ls输出目标
我们了解到,不带任何选项的 ls命令将在一行中打印文件名:
$ ls -a
. .. aDir file1.txt file2.txt foo .hidden
此外,我们知道如果我们通过管道将一些输出传递给 cat命令,它会按原样打印输出:
$ echo "This is a beautiful string." | cat
This is a beautiful string.
现在,让我们将ls命令的结果通过管道传递给cat命令,看看会发生什么:
$ ls -a | cat
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
正如我们在上面的输出中看到的,每个文件名都神奇地排成一行。
这是因为ls命令根据输出目标(例如终端、重定向或管道)调整输出。
如果输出目标不是终端,则-1选项将是ls*命令*的默认选项。因此,ls将每行输出一个文件名到目标。
我们已经解决了当输出目标是管道时,ls命令将每行输出一个文件。
接下来,让我们看另一个ls输出到重定向的例子:
$ ls -a > /tmp/ls.output
$ cat /tmp/ls.output
.
..
aDir
file1.txt
file2.txt
file3.txt
.hidden
如示例所示, 当目标是文件重定向时, ls 每行输出一个文件。