0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linux】特定ディレクトリ(リポジトリ)直下の全てのファイル情報を一度に取得する

Last updated at Posted at 2024-09-09

はじめに

特定ディレクトリ(カレントディレクトリ)直下にある、ファイルの情報を一度に取得するコードです。

私はこのコードの作成背景にあたり、以下の状況にありました。

  • 状況
    Gitのリモートリポジトリを別のサービスに移行する。
    この時、元のリポジトリをA、Aと全く同じコードをプッシュした新しいレポジトリをBとする。
  • 問題点
    特定ディレクトリ(レポジトリ)直下にあるすべてのファイルの容量、ハッシュ値が全て同じかどうかをチェックする必要がある。
    だが、フォルダが大量にあるため、いちいちコマンドを打つのは手間

そこで、ShellScriptを使って半自動化しようというわけです。

目的

  • リポジトリAとリポジトリBが全く同じかを確認するために、交互にチェックアウトした状態で、すべてのファイル容量、ハッシュ値をエビデンスとして取得する
  • 取得したデータの差分をチェックする

手順

私の状況では、手順5まで行いましたが、ただ単に情報を取得するだけの場合、手順2まででOKです。

#!/bin/bach
TRAGET_DIR="."
find "$TARGET_DIR" -type f | while read -r file; do
    md5 "&file" #ファイルのハッシュ値を調べる場合
    ls -l "$file" | awk '{print $5, $9}' #ファイルの容量(Byte)を調べる場合
  1. 上記のシェルスクリプトを適当なテキストエディタで書く
    ここでは、ハッシュ値を取得するためにmd5コマンドを使っているが、ハッシュ値はSHA256など他の方法もある。
  2. 適当な名前(例: GetFileInfo.sh)で調査対象のディレクトリ直下に保存
  3. ターミナルでディレクト直下に移動し、bash GetFileInfo.shでコマンド実行
  4. 1~3をリポジトリAとリポジトリBを交互にチェックアウトして実行。
    各々の結果をresultA.txtresultB.txtで保存する。
  5. 以下コマンドを実行し、差分を検知
diff resultA.txt resultB.txt

では、本日はこのあたりで。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?