针对初学者的 Linux Xargs 命令的 12 个实用示例
2024年3月17日在 Linux 中使用 fsck 命令检查和修复文件系统错误
2024年3月17日Linux 中的 ls命令用于列出任意目录的内容。
默认情况下,它列出所有内容,无论是文件、目录、链接还是命名管道。
但是如果您只想列出目录怎么办?你是怎样做的?
与 Linux 中的任何事物一样,有多种方法可以完成同一任务。仅列出目录没有什么不同:
- ls -d */
- ls -l | grep '^d'
- 寻找 。-最大深度 1 -类型 d
- 回声*/
- 树-d-L 1
不用担心。我会详细解释事情。这是我将在此处的示例中使用的目录的内容:
![](https://www.alaica.com/wp-content/uploads/linux-338.png)
使用 ls 命令仅列出目录
使用熟悉的 ls 命令来执行此操作总是好的,因为这是用于显示目录内容的命令。
要仅列出子目录,请使用-d
ls 命令的选项,如下所示:
ls -d */
这是它显示的输出:
[abhishek@localhost Documents]$ ls -d */
another_dir/ my_dir/
为什么*/
?因为没有它,ls -d
只会返回目录名称。该-d
选项列出目录而不是其内容(包括文件、目录等)。
这*/
是一个模式。使用*
,您可以列出所有内容(包括子目录的内容)并将/
模式限制为目录。
这张图很好地描述了这种差异。
![](https://www.alaica.com/wp-content/uploads/linux-339.png)
您可以将其与长列表选项-l
和大多数其他选项结合起来:
[abhishek@localhost Documents]$ ls -ld */
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/
drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/
如果您不希望目录名称末尾有尾部斜杠(/),可以使用 cut 命令将其剪切掉:
[abhishek@localhost Documents]$ ls -ld */ | cut -f1 -d'/'
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir
drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
仅列出特定目录中的子目录
上面的命令在当前目录下运行。如果不在同一个目录下怎么办?
*/
在这种情况下,您可以在目录路径的末尾使用ls -d
:
ls -d Path/To/Dir/*/
下面是我移出 Documents 目录,然后仅列出 Documents 目录内的目录的示例:
[abhishek@localhost ~]$ ls -ld Documents/*/
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/
drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/
您是否注意到它没有列出隐藏目录?这是该方法的一个缺点。您可以使用ls -d .*/
显示隐藏目录,但它仅显示隐藏目录。
结合使用 ls 和 grep 命令
您始终可以依靠古老的 grep 命令来过滤特定内容的输出。
如果列出的内容很长,您可以识别目录,因为以d
.
可以使用grep来过滤以d开头的内容:
ls -l | grep '^d'
但这为您提供了比目录名称更多的字段:
[abhishek@localhost Documents]$ ls -l | grep '^d'
drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir
drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir
使用 find 命令仅列出目录
以下是如何使用 find 命令仅列出子目录:
find directory_path -maxdepth 1 -type d
我希望您熟悉 find 命令。尽管如此,我还是会解释一下。
使用type d
,您可以要求 find 命令仅查找目录。
您要求maxdepth 1
find 命令仅将搜索保留在当前级别(而不进入子目录内部)。
[abhishek@localhost Documents]$ find . -maxdepth 1 -type d
.
./my_dir
./another_dir
./.my_hidden_dir
![](https://www.alaica.com/wp-content/uploads/linux-340.png)
正如您在上面的输出中看到的,它还显示了隐藏目录。
使用tree命令仅列出目录
如果您的目标是仅列出目录,您也可以使用 tree 命令。
默认情况下,tree 命令为您提供完整的目录结构。您可以将其修改为仅显示目录并且仅显示当前级别。
tree -dai -L 1
- d - 仅查找目录
- a -查找隐藏文件和目录
- i - 从显示中删除树结构
- L 1 - 不要进入子目录
这是输出:
abhishek@localhost Documents]$ tree -dai -L 1
.
another_dir
my_dir
.my_hidden_dir
3 directories
![](https://www.alaica.com/wp-content/uploads/linux-341.png)
使用 echo 命令列出目录
最不可能的候选人?您会惊讶地发现Linux 中的 echo 命令也可以用于显示目录的内容。尝试使用echo *
并亲自看看。
与 ls 命令类似,您也可以使用该*/
模式仅列出当前工作目录中的目录。
echo */
以下是与使用该命令得到的输出相同的输出ls -d
:
![](https://www.alaica.com/wp-content/uploads/linux-342.png)
可能有更多方法仅列出目录而不列出文件。事实上,根据您要寻找的内容,这里讨论的方法可能有一些假设和但是。
如果您的目标只是显示目录,那么我讨论的大多数命令都可以工作。如果您想要更具体的内容,例如仅获取带斜杠的目录名称等,则必须自行进行一些格式化。
我希望这篇 Linux 技巧对您有所帮助。随时欢迎提出问题和建议。