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

推薦する

MySQL 5.7.20 zip インストール チュートリアル

MySQL 5.7.20 zipインストール、具体的な内容は次のとおりです(1)圧縮パッケージを解凍...

Dockerコンテナのネットワークポート設定プロセスの詳細な説明

ネットワークポートの公開実際、Docker にはネットワーク ポートの公開に関わる 2 つのパラメー...

ウェブデザイナーのための超便利なツール 50 選

ウェブデザイナーになるのは簡単ではありません。デザインやアーキテクチャを考慮するだけでなく、さまざま...

CSS3 で画像ドロワー効果を実装するためのサンプル コード

いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...

指定された期間内のすべての日付または月を取得する MySQL ステートメント (ストアド プロシージャの設定やテーブルの追加は不要)

mysql は期間内のすべての日付または月を取得します1: mysqlは期間内のすべての月を取得し...

forEachでawaitが機能しない問題を解決する

1. はじめに数日前、プロジェクトでトラバーサルに使用したときに落とし穴に遭遇し、解決するのに 1 ...

セマンティックタグを使用して、IE6、7、8と互換性のあるHTMLを記述します。

HTML5 では、ヘッダー、フッター、ナビゲーションなどのセマンティック タグが追加されているため...

純粋な CSS で実装された大きなドロップダウン メニューのサンプル コード

これは純粋に CSS で実装された大きなドロップダウン メニューです。この大きなメニューは、js コ...

VMware および CentOS システムのインストール方法 - ルート パスワードをリセットする

今日のタスク1. Linuxディストリビューションの選択2.vmwareが仮想マシン(centos)...

Filebeat を使用して Nginx ログを収集する方法

Nginx ログは、ユーザーの住所の場所や行動プロファイルなどを分析するために使用できます。Elas...

クロスオリジン画像リソース権限(CORS 対応画像)

HTML 仕様書では、画像の crossorigin 属性が導入されています。適切なヘッダー情報 ...

外部ファイル(js/vbs/css)をインポートするときに文字化けを回避する方法

ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...

VUE ユニアプリの基本コンポーネントの簡単な紹介

1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...

Tomcat maxPostSize設定実装プロセス分析

1. maxPostSize を設定する理由は何ですか? tomcat コンテナには送信データのサイ...

Vue でよく使われる命令 v-if と v-show の違いを簡単に分析します。

目次序文1.v-ショー2.v-if 3. v-showとv-ifの違い1. 原則の違い2. アプリケ...