linux目录操作命令
Linux 目录操作命令详解:从浏览到管理的核心工具
目录操作是 Linux 命令行的基础,掌握 ls、cd、mkdir、rmdir 和 pwd 等命令能让你高效管理文件系统结构。本文将详细解析这些命令的用法、选项及实战技巧,帮助你熟练应对目录相关操作。
文件与目录列表:ls 命令
ls(list)命令用于列出目录中的文件和子目录,是最常用的 Linux 命令之一。通过不同选项,可灵活控制显示格式和内容。
基本用法
ls [选项] [目录/文件路径]
# 若不指定路径,默认列出当前目录内容
核心选项详解
| 选项 | 功能描述 | 示例 | |
|---|---|---|---|
-l |
以长格式显示详细信息(权限、所有者、大小、修改时间等)。 | ls -l /home 列出 /home 目录的详细内容 |
|
-a |
显示所有文件(包括隐藏文件,以 . 开头的文件),包含 .(当前目录)和 ..(父目录)。 |
ls -a 显示当前目录所有文件 |
|
-A |
显示所有文件(包括隐藏文件),但不包含 . 和 ..。 |
ls -A 更简洁地显示隐藏文件 |
|
-h |
以人性化单位显示文件大小(如 K、M、G),需配合 -l 使用。 |
ls -lh 显示文件大小(如 1.5K、2.3M) |
|
-t |
按修改时间排序(最新修改的文件在前)。 | ls -lt 按修改时间降序列出文件 |
|
-r |
反向排序(与 -t 配合可实现按修改时间升序)。 |
ls -ltr 按修改时间升序列出文件 |
|
-S |
按文件大小排序(从大到小)。 | ls -lS 按大小降序列出文件 |
|
-d |
仅显示目录本身的信息,而非目录内的内容。 | ls -ld /etc 显示 /etc 目录的详细信息 |
|
-i |
显示文件的inode 编号(文件系统中唯一标识)。 | ls -i 查看当前目录文件的 inode |
|
-R |
递归列出所有子目录中的内容(遍历整个目录树)。 | ls -R /var 递归列出 /var 下所有文件 |
|
-F |
在文件名后添加符号标识类型(目录加 /,可执行文件加 *,链接加 @)。 |
ls -F 直观区分文件类型 |
|
-1 |
强制单列输出(数字 1),适合管道处理(如 `ls -1 |
grep “txt”`)。 | ls -1 单列显示文件 |
过滤器:模式匹配
ls 支持通过通配符快速筛选文件,常用通配符:
*:匹配任意数量的任意字符(包括零个)。?:匹配单个任意字符。
示例
# 列出所有以 ".txt" 结尾的文件
ls -l *.txt
# 列出以 "file" 开头、后跟一个字符的文件(如 file1、fileA)
ls -l file?
# 列出以 "2023" 开头且以 ".log" 结尾的文件
ls -l 2023*.log
# 列出名称中包含 "data" 的文件
ls -l *data*
切换目录:cd 命令
cd(change directory)命令用于切换当前工作目录,是导航文件系统的核心命令。
基本用法
cd [目录路径]
常用场景
| 命令 | 功能描述 |
|---|---|
cd |
不带参数时,默认切换到当前用户的主目录(~ 等价)。 |
cd ~ |
切换到当前用户的主目录(同 cd)。 |
cd ~用户名 |
切换到指定用户的主目录(如 cd ~root 切换到 /root)。 |
cd . |
切换到当前目录(无实际意义,常用于脚本)。 |
cd .. |
切换到父目录(上一级目录)。 |
cd - |
切换到上一次所在的目录(类似 “返回” 功能)。 |
cd /path/to/dir |
通过绝对路径切换目录(从根目录 / 开始)。 |
cd ./path/to/dir |
通过相对路径切换目录(从当前目录开始)。 |
示例
# 切换到 /usr/local 目录(绝对路径)
cd /usr/local
# 从当前目录切换到子目录 documents(相对路径)
cd ./documents
# 切换到父目录的父目录(上两级)
cd ../../
# 切换到主目录,再返回上一次的目录
cd ~
cd - # 回到之前的目录
创建目录:mkdir 命令
mkdir(make directory)命令用于创建新目录,支持一次性创建多级目录。
基本用法
mkdir [选项] 目录名
核心选项
| 选项 | 功能描述 | 示例 |
|---|---|---|
-p |
递归创建目录,若父目录不存在则自动创建(无需手动逐级创建)。 | mkdir -p /a/b/c 创建多级目录 /a/b/c |
-m |
自定义目录权限(默认权限由 umask 决定,通常为 755)。 |
mkdir -m 777 shared 创建权限为 777 的目录 |
-v |
显示创建目录的详细过程(verbose)。 | mkdir -v test 输出 “mkdir: 已创建目录 ‘test’” |
示例
# 创建单个目录
mkdir photos
# 同时创建多个目录
mkdir docs music videos
# 递归创建多级目录(父目录不存在时自动创建)
mkdir -p project/src/main/java
# 创建权限为 700 的目录(仅所有者可读写执行)
mkdir -m 700 private
删除目录:rmdir 命令
rmdir(remove directory)命令用于删除空目录,若目录非空则无法删除(需先删除目录内文件)。
基本用法
rmdir [选项] 目录名
核心选项
| 选项 | 功能描述 | 示例 |
|---|---|---|
-p |
递归删除空目录,若父目录变为空则一并删除(需从子目录开始)。 | rmdir -p a/b/c 若 a/b/c、a/b、a 均为空,则全部删除 |
-v |
显示删除过程的详细信息。 | rmdir -v old_dir 输出 “rmdir: 已删除目录 ‘old_dir’” |
示例
# 删除空目录 temp
rmdir temp
# 递归删除空目录结构(a/b/c 均为空)
rmdir -p a/b/c
注意:rmdir 仅能删除空目录。若要删除非空目录,需使用 rm -r 命令(如 rm -r non_empty_dir),但需谨慎操作避免误删数据。
显示当前目录:pwd 命令
pwd(print working directory)命令用于显示当前工作目录的绝对路径,是定位当前位置的常用工具。
基本用法
pwd
示例
# 显示当前目录的绝对路径
pwd
# 输出示例:/home/user/documents
实战技巧与常见场景
快速列出最近修改的文件:
ls -lht # 按修改时间降序,显示详细信息和人性化大小查找大文件:
ls -lS | head -n 10 # 列出当前目录中最大的 10 个文件创建项目目录结构:
mkdir -p project/{src/{main,test}/java,docs,target} # 递归创建 Maven 项目常见目录结构快速返回主目录并列出内容:
cd ~ && ls -la # 切换到主目录并显示所有文件(包括隐藏文件)查看目录占用空间:
结合du命令(ls不直接显示目录总大小):du -sh /var/log # 显示 /var/log 目录的总大小(人性化单位)