Linuxで同一ファイルを見つける方法

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルがさまざまな場所に保存されることです。その結果、大量のディスク領域が占有され、システムの動作がますます遅くなります。

したがって、コンピューターの空き容量が不足している場合は、そのようなファイルを削除して空き容量を確保してみてください。 Linux では、ファイルの inode 値を識別することで、システム内で同じファイルを見つけることができます。

inode は、ファイル名とファイルの内容を除く、ファイルに関するすべての情報を記録するデータ構造です。 2 つ以上のファイルの inode 値が同じ場合、ファイル名や場所が異なっていても、内容、所有者、権限は実際には同じであり、同じファイルとみなすことができます。

このタイプのファイルは、実際にはいわゆる「ハードリンク」です。ハードリンクは、inode 値は同じですが、ファイル名が異なります。ソフト リンクは、実際にはターゲット ファイルを指すショートカットですが、独自の inode 値を持ちます。

$ ls -l 私の*
-rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 myfile
lrwxrwxrwx 1 liangxu liangxu 6 Apr 15 11:18 myref -> myfile
-rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 mytwin

同じディレクトリ内のどのファイルが同じ inode 値を持つかを直接知ることはできませんが、それらを識別するのは難しくありません。実際、ls -i コマンドを使用して inode 値で並べ替えると、これらのファイルを直接見つけることができます。

$ ls -i | ソート -n | もっと見る
 ...
 788000 マイファイル <==
 788000 マイツイン <==
 801865 名前ラベル.pdf
 786692 怒ったまま家を出てはいけない
 920242 NFCU_ドキュメント
 800247 nmap ノート

この結果の最初の列には、対応する inode 値があります。したがって、この結果から、どのファイルに同じ inode 値があるかが一目でわかります。

ファイルに対応するハードリンク ファイルだけを検索したい場合は、find コマンドを使用し、-samefile オプションを追加してすばやく検索することができます。

$ find . -samefile myfile
./私のファイル
./保存/コピー
./マイツイン

これらのファイルはすべて同じ inode 値を持っています。信じられない場合は、ls コマンドを使用して詳細情報を表示できます。

$ find . -samefile myfile -ls
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 ./myfile
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 ./save/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 ./mytwin

ファイル名を除いて、これらのファイル名の情報はまったく同じであることがわかります。注意深い人は、2 番目の列 (ハード リンクの数) が 4 であることに気付くかもしれませんが、実際に見つかったファイルは 3 つだけでした。つまり、それらのファイルと inode 値を共有している別のファイルがあるのですが、このコマンドではそれを見つけられませんでした。

面倒くさがり屋なので、毎回コマンドを入力するのは面倒なので、スクリプトを使用してディレクトリ内の同じファイルを検索します。

#!/bin/bash

# inode を共有するファイルを検索します

前へ = ""

# inode でファイルを一覧表示する
ls -i | ソート -n > /tmp/$0

# ファイル内で重複する inode 番号を検索します
行を読みながら
する
  inode=`echo $line | awk '{print $1}'`
  [ "$inode" == "$prev" ] の場合;
    grep $inode /tmp/$0
  フィ
  前=$inode
完了 < /tmp/$0

# 掃除
rm /tmp/$0

実行結果:

$ ./findHardLinks
 788000 マイファイル
 788000 マイツイン

もちろん、find コマンドを使用して、inode 値に基づいてシステム内のすべての同一ファイルを検索することもできます。

$ find / -inum 788000 -ls 2> /dev/null
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 /tmp/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 /home/liangxu/myfile
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 /home/liangxu/save/mycopy
 788000 4 -rw-r--r-- 4 liangxu liangxu 228 4月12日 19:37 /home/liangxu/mytwin

このコマンドでは、エラー メッセージを特殊ファイル /dev/null にリダイレクトします。これにより、アクセス権限のないパスを検索するときに、画面に「permission denied」と表示されなくなります。

Linux で同一ファイルを検索する方法についての記事はこれで終わりです。Linux で同一ファイルを検索する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux の 5 つの検索コマンドの概要
  • Linuxでファイルをあいまいに検索する方法
  • Linuxシェルはファイルを検索し、行番号と対応する間隔を表示します。
  • Linux でファイルをあいまい検索するのに適したコマンドは何ですか?
  • Linux コマンド find ファイル検索の例
  • Linux のディレクトリ内で時間でフィルタリングされたファイルを検索する方法の詳細な説明
  • Linuxでファイルを見つける方法
  • Linux でのファイル検索の完全ガイド

<<:  js キャンバスは角丸画像を実現します

>>:  mysql 変数の使用例の分析 [システム変数、ユーザー変数]

推薦する

Linux スワップメモリ​​を拡張する方法

スワップ メモリとは、主に物理メモリが不足している場合に、システムがハード ディスク領域の一部をサー...

MySQL遅延スレーブを導入するメリットのまとめ

序文MySQL のマスター/スレーブ レプリケーション関係は、厳密には「同期」または「マスター/スレ...

Vueベースのカスタムコンポーネントを実装してアイコンを導入する

序文プロジェクト開発では、アイコンを使用する方法はたくさんあります。iconfont で適切なアイコ...

複数の .sql ファイルを MySQL に効率的にインポートする方法の詳細な説明

MySQL には、複数の .sql ファイル (SQL ステートメントを含む) をインポートする方法...

ウェブデザインの教育または学習プログラム

セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...

CentOS 7へのJenkinsのインストール手順の詳細な説明

Yum経由でJenkinsをインストールする1. インストール # yum ソースをインポート wg...

yumコマンドの使い方

1. yumの紹介Yum (フルネームは Yellow dogUpdater、Modified) は...

Navicat で MySQL データベースのパスワードを変更する複数の方法

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

MySQL 8.0.19 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...

node.jsのコアモジュールとは

目次グローバルオブジェクトグローバルオブジェクトとグローバル変数プロセスコンソール一般的なツールユー...

Viteは仮想ファイルの実装を導入します

目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...

あるテーブルのデータの列を別のテーブルの列にコピーするMySQLメソッド

mysql 1 つのテーブル列を別のテーブルにコピーする場合によっては、フィールドから別の新しいフィ...

MySql でリモート接続を許可する方法

MySql でリモート接続を許可する方法この目標を達成するには、2つのことを行う必要がある。ユーザー...

JavaScript の 3 つの BOM オブジェクト

目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...

JavaScriptの信頼性の低い未定義

undefined JavaScript では、値が undefined かどうかを判断したい場合は...