介绍
在这个项目中,你将学习如何把 /etc 目录下最后修改年份为 2022 年的文件复制到 /tmp/etc 目录,同时保留目录结构。
🎯 任务
在这个项目中,你将学习:
- 如何创建一个脚本来自动化文件复制过程
- 如何使用
find命令根据文件的最后修改日期搜索文件 - 如何使用
cp命令在保留目录结构的同时复制文件
🏆 成果
完成这个项目后,你将能够:
- 根据文件的最后修改日期自动化从特定目录复制文件的过程
- 理解如何使用
find和cp等常见的 shell 命令来操作文件和目录 - 应用你的知识来解决实际的文件管理任务
创建收集文件脚本
在这一步中,你将创建一个脚本,把 /etc 目录下最后修改年份为 2022 年的文件复制到 /tmp/etc 目录,同时保留目录结构。
- 打开一个文本编辑器,在
/home/labex/project目录下创建一个名为collect_files.sh的新文件。 - 将以下代码添加到
collect_files.sh文件中:
#!/bin/zsh
## 脚本:collect_files.sh
## 描述:将 /etc 目录下最后修改年份为 2022 年的文件复制到 /tmp/etc 目录,同时保留目录结构。
source_dir="/etc"
target_dir="/tmp"
year="2022"
## 创建目标目录
mkdir -p "$target_dir"
## 使用 find 命令在源目录中搜索最后修改年份为 2022 年的文件,并将它们复制到目标目录
find "$source_dir" -type f -newermt "$year-01-01"! -newermt "$year-12-31" -exec cp --parents --dereference "{}" "$target_dir" \;
echo "文件复制完成。"
此脚本使用 find 命令在 /etc 目录中搜索 2022 年最后修改的文件。-newermt 和 ! -newermt 选项用于根据文件的最后修改日期过滤文件。然后使用 cp 命令将文件复制到 /tmp/etc 目录,保留目录结构。
- 保存文件。
测试脚本
在这一步中,你将测试 collect_files.sh 脚本,以确保它按预期工作。
- 打开一个终端,导航到
/home/labex/project目录。 - 使用以下命令运行脚本:
sudo sh collect_files.sh
此命令以提升的权限运行脚本,这是从 /etc 目录复制文件所必需的。
- 脚本运行完成后,检查
/tmp/etc目录,以确保最后修改年份为 2022 年的文件已被正确复制。 - 验证目录结构是否得以保留。例如,如果
/etc/fstab文件被复制,你应该在路径/tmp/etc/fstab处看到该文件。
如果脚本按预期工作,你就完成了这个项目。如果你遇到任何问题,请检查脚本和说明,并进行必要的调整。
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



