Skip to content

目录操作

查看目录

bash
# 列出目录内容
ls
ls -l          # 详细信息
ls -la         # 包含隐藏文件
ls -lh         # 人性化文件大小
ls -lt         # 按时间排序
ls -lR         # 递归列出子目录

# 查看当前目录路径
pwd

# 树形显示目录结构
tree
tree -L 2      # 只显示两层
tree -a        # 包含隐藏文件
tree -d        # 只显示目录

切换目录

bash
# 切换到指定目录
cd /etc
cd ~/Documents     # 切换到用户家目录下的 Documents
cd ..              # 返回上级目录
cd -               # 返回上次所在目录
cd ~               # 切换到家目录
cd                 # 同 cd ~

创建目录

bash
# 创建单个目录
mkdir mydir

# 创建多个目录
mkdir dir1 dir2 dir3

# 递归创建多级目录(目录不存在时自动创建父目录)
mkdir -p /tmp/a/b/c

# 创建目录并设置权限
mkdir -m 755 mydir

# 创建目录时显示过程
mkdir -v mydir

删除目录

bash
# 删除空目录
rmdir emptydir

# 递归删除空目录
rmdir -p a/b/c

# 删除目录及其全部内容(谨慎使用)
rm -rf mydir

# 安全删除前确认
rm -rfi mydir

复制目录

bash
# 递归复制目录
cp -r source_dir/ dest_dir/

# 保留权限和时间戳
cp -rp source_dir/ dest_dir/

# 显示复制过程
cp -rv source_dir/ dest_dir/

移动目录

bash
# 移动目录(也用于重命名)
mv old_dir new_dir
mv mydir /tmp/

查看目录大小

bash
# 查看目录总大小
du -sh /var/log

# 查看各子目录大小并排序
du -h --max-depth=1 /var | sort -h

# 查看当前目录下各项大小
du -sh *

实用操作

遍历目录

bash
#!/bin/bash

# 遍历目录下所有文件
for file in /etc/*; do
    if [ -f "$file" ]; then
        echo "文件: $file"
    elif [ -d "$file" ]; then
        echo "目录: $file"
    fi
done

确保目录存在

bash
#!/bin/bash

ensure_dir() {
    local dir="$1"
    if [ ! -d "$dir" ]; then
        mkdir -p "$dir"
        echo "已创建目录: $dir"
    fi
}

ensure_dir "/tmp/myapp/logs"
ensure_dir "/tmp/myapp/data"

清理旧目录

bash
#!/bin/bash

# 删除 30 天前的备份目录
find /backup -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;

目录同步(rsync)

bash
# 同步两个目录(本地)
rsync -av source_dir/ dest_dir/

# 同步到远程服务器
rsync -avz source_dir/ user@host:/remote/path/

# 删除目标中源没有的文件
rsync -av --delete source_dir/ dest_dir/

获取目录中文件数量

bash
#!/bin/bash

count_files() {
    local dir="${1:-.}"
    local count=$(find "$dir" -maxdepth 1 -type f | wc -l)
    echo "$dir 中有 $count 个文件"
}

count_files "/etc"
count_files "."