はじめに
このプロジェクトでは、2022 年の最終更新日付を持つ /etc ディレクトリからのファイルをディレクトリ構造を維持したまま /tmp/etc ディレクトリにコピーする方法を学びます。
🎯 タスク
このプロジェクトでは、以下のことを学びます。
- ファイルコピープロセスを自動化するスクリプトを作成する方法
findコマンドを使用して、最終更新日付に基づいてファイルを検索する方法cpコマンドを使用して、ディレクトリ構造を維持したままファイルをコピーする方法
🏆 成果
このプロジェクトを完了すると、以下のことができるようになります。
- 特定のディレクトリからのファイルを最終更新日付に基づいてコピーするプロセスを自動化する
findやcpなどの一般的なシェルコマンドを使用してファイルやディレクトリを操作する方法を理解する- 現実世界のファイル管理タスクを解決するために、自分の知識を適用する
ファイル収集スクリプトを作成する
このステップでは、2022 年の最終更新日付を持つ /etc ディレクトリからのファイルをディレクトリ構造を維持したまま /tmp/etc ディレクトリにコピーするためのスクリプトを作成します。
- テキストエディタを開き、
/home/labex/projectディレクトリにcollect_files.shという名前の新しいファイルを作成します。 collect_files.shファイルに以下のコードを追加します。
#!/bin/zsh
## Script: collect_files.sh
## Description: Copies files from the /etc directory with a last modified year in 2022 to the /tmp/etc directory while preserving directory structure.
source_dir="/etc"
target_dir="/tmp"
year="2022"
## Create the target directory
mkdir -p "$target_dir"
## Use the find command to search for files in the source directory with a last modified year in 2022 and copy them to the target directory
find "$source_dir" -type f -newermt "$year-01-01"! -newermt "$year-12-31" -exec cp --parents --dereference "{}" "$target_dir" \;
echo "File copying completed."
このスクリプトは、find コマンドを使用して、2022 年に最終更新された /etc ディレクトリ内のファイルを検索します。-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 でさらに多くの実験を行って練習してください。



