特定の時期からのファイル収集

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、2022 年の最終更新日付を持つ /etc ディレクトリからのファイルをディレクトリ構造を維持したまま /tmp/etc ディレクトリにコピーする方法を学びます。

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • ファイルコピープロセスを自動化するスクリプトを作成する方法
  • find コマンドを使用して、最終更新日付に基づいてファイルを検索する方法
  • cp コマンドを使用して、ディレクトリ構造を維持したままファイルをコピーする方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • 特定のディレクトリからのファイルを最終更新日付に基づいてコピーするプロセスを自動化する
  • findcp などの一般的なシェルコマンドを使用してファイルやディレクトリを操作する方法を理解する
  • 現実世界のファイル管理タスクを解決するために、自分の知識を適用する

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") subgraph Lab Skills linux/cp -.-> lab-301463{{"特定の時期からのファイル収集"}} linux/cd -.-> lab-301463{{"特定の時期からのファイル収集"}} linux/mkdir -.-> lab-301463{{"特定の時期からのファイル収集"}} linux/find -.-> lab-301463{{"特定の時期からのファイル収集"}} linux/sudo -.-> lab-301463{{"特定の時期からのファイル収集"}} end

ファイル収集スクリプトを作成する

このステップでは、2022 年の最終更新日付を持つ /etc ディレクトリからのファイルをディレクトリ構造を維持したまま /tmp/etc ディレクトリにコピーするためのスクリプトを作成します。

  1. テキストエディタを開き、/home/labex/project ディレクトリに collect_files.sh という名前の新しいファイルを作成します。
  2. 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 ディレクトリにファイルをコピーします。

  1. ファイルを保存します。

スクリプトをテストする

このステップでは、collect_files.sh スクリプトが期待通りに機能していることを確認するためにテストします。

  1. ターミナルを開き、/home/labex/project ディレクトリに移動します。
  2. 次のコマンドでスクリプトを実行します。
sudo sh collect_files.sh

このコマンドは、/etc ディレクトリからのファイルをコピーする際に必要な昇格された特権でスクリプトを実行します。

  1. スクリプトの実行が完了した後、/tmp/etc ディレクトリを確認して、2022 年の最終更新日付を持つファイルが正しくコピーされていることを確認します。
  2. ディレクトリ構造が維持されていることを確認します。たとえば、/etc/fstab ファイルがコピーされた場合、/tmp/etc/fstab のパスにファイルが表示されるはずです。

スクリプトが期待通りに機能していれば、このプロジェクトは完了です。問題がある場合は、スクリプトと指示を見直して、必要な調整を行ってください。

✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実験技術を向上させるために、LabEx でさらに多くの実験を行って練習してください。