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 変数の使用例の分析 [システム変数、ユーザー変数]

推薦する

Nginx の負荷分散方法の概要

負荷分散を理解するには、まずフォワード プロキシとリバース プロキシを理解する必要があります。注記:...

テーブルレイアウトの長所と短所、そして推奨されない理由

テーブルの欠点1. テーブルは他の HTML タグよりも多くのバイトを占有します。 (ダウンロード時...

CSS のオーバーフロー:hidden エラーの解決方法

失敗の原因今日、カルーセルを書いていたときに、overflow;hidden; が失敗する可能性があ...

HTMLのリストタグを数える

1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...

MySQL マルチテーブルクエリの具体例

1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...

js 日付と時刻のフォーマット方法の例

js 日付時刻形式日付と時刻を指定された形式に変換します。例: YYYY-mm-dd HH:MM は...

JS で Websocket ベースのマルチターミナル ブリッジング プラットフォームを実装する方法

目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...

フォーム送信の更新ページはソースコード設計にジャンプしません

1. ソースコードの設計コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...

html ページ!--[IE の場合]...![endif]--使用方法の詳細な紹介

コードをコピーコードは次のとおりです。 <!--[IEの場合]><script t...

MySQL は、あるテーブルのデータに基づいて別のテーブルの特定のフィールドを更新します (SQL ステートメント)

次のコードは、MySQL が 1 つのテーブルのデータに基づいて別のテーブルのいくつかのフィールドを...

MySQL がエラーを報告: ファイルが見つかりません: './mysql/plugin.frm' 解決策

問題を見つける最近、仕事中に問題が見つかりました。問題は、MySQL ディスクがいっぱいだったことで...

Windows 10 + mysql 8.0.11 zipインストールチュートリアルの詳細

準備する: MySQL 8.0 Windows zip パッケージのダウンロード アドレス: htt...

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

CSS属性のマージンの理解について話す

1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...