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

推薦する

HTML テーブル マークアップ チュートリアル (6): 暗い境界線の色属性 BORDERCOLORDARK

表では、右下の境界線の色を個別に定義したり、セルの左上の境界線の色を定義したりできます。これら 2 ...

Vue における ref と $refs の紹介と使用例

序文JavaScript では、document.querySelector("#demo...

MySQLの数値型自動増分における落とし穴

テーブル構造を設計する場合、数値型は最も一般的な型の 1 つですが、数値型をうまく使用するのは想像す...

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

フロントエンドページのスライド検証を実装するための JavaScript + HTML (2)

この記事の例では、クールなフロントエンドページのスライド検証の具体的なコードを参考までに共有していま...

JavaScriptは行削除機能を備えたテーブルを動的に生成します

この記事の例では、テーブルを動的に生成したり行を削除したりするためのJavaScriptの具体的なコ...

MySQL SQL ステートメントのパフォーマンス チューニングの簡単な例

MySQL SQL ステートメントのパフォーマンス チューニングの簡単な例サーバー開発を行う際には、...

パスワードログインなしのLinux構成スタンドアロンおよびフルディストリビューションの詳細なチュートリアル

目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

ウェブページ読み込み時に左右にジャンプする原因の分析と解決

最近、ウェブサイトを設計するときにこの問題に遭遇しています。メンバーセンターを設計し、コンテンツを ...

ウェブサイトのコードブロックのpreタグにコピーコードボタンコードを追加します

他のよりプロフェッショナルなブログ システムを参照すると、コード ブロックにコードのコピー ボタンが...

503 サービス利用不可エラーの解決方法の説明

1. Webページを開くと503サービス利用不可が表示されますが、更新すると正常にアクセスできます。...

削除、切り捨て、ドロップの違いと選択方法

序文先週、同僚が私に尋ねました。「兄さん、MySQL にバグを見つけました。午後にディスクをクリーン...

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

Vueカスタムコンポーネントはイベント修飾子を使用してピットレコードを踏む

序文今日、自作のコンポーネントを使っていたところ、突然、長い間忘れていたバブリングイベントに遭遇しま...