You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash技巧:保留原文件并删除pkgs目录及复制的内容

Bash实现保留原始文件并删除pkgs目录及复制内容的方法

正确实现步骤

1. 记录原始文件列表

先把当前目录下除了pkgs之外的所有文件/目录(包括隐藏文件)记录到临时文件,避免因文件名含空格、特殊字符导致的错误:

# 创建临时文件存储原始条目
original_list=$(mktemp)
# 列出并排序当前目录条目,排除pkgs后写入临时文件
ls -A1 | grep -v '^pkgs$' | sort > "$original_list"

2. 复制pkgs内容并完成操作

将pkgs内的内容递归复制到当前目录,执行你的业务操作:

# 递归复制pkgs下所有内容到当前目录
cp -r pkgs/* .

# 在这里执行你需要完成的相关操作...

3. 删除pkgs目录

复制完成后直接删除pkgs目录:

rm -rf pkgs

4. 删除从pkgs复制过来的新增内容

对比当前目录条目和原始列表,删除所有新增的、不属于原始目录的内容:

# 创建临时文件存储当前目录条目
current_list=$(mktemp)
ls -A1 | sort > "$current_list"

# 找出当前目录中不在原始列表的条目,逐一删除
comm -13 "$original_list" "$current_list" | while IFS= read -r item; do
    rm -rf "$item"
done

# 清理临时文件
rm "$original_list" "$current_list"

关键说明

  • 使用mktemp创建临时文件,避免文件名冲突,比直接用变量存储更安全(能处理含空格、换行的文件名)。
  • ls -A1会列出所有条目(除了.和..),包含隐藏文件;配合sort确保comm命令能正确对比两个列表。
  • comm -13仅输出当前列表独有的条目,也就是从pkgs复制过来的新增内容,不会误删原始文件。

内容的提问来源于stack exchange,提问作者monte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:40:23