ディレクトリ内のハードリンクの総数を計算する方法は?

ディレクトリ内のハードリンクの総数を計算する方法は?

私は-lsとfindコマンドを使ってディレクトリのハードリンクの発生回数を数えようとしました。

ls -liコマンドを使用して2より大きいすべてのリンク数を物理的に計算することに加えて、これを行う簡単な方法はありますか?

ベストアンサー1

そしてzsh

(){echo $#} *(NDl+1)

.カウントされませんのでご注意ください..

ディレクトリ(ほとんどのファイルシステムでは常にハードリンク)を計算したくない場合は、に変更します*(NDl+1^/)

  • (){echo $#}引数の数を出力する匿名関数
  • *(...)glob修飾子を持つglob
  • Nnullglobこのglobを有効にします(一致するものがない場合は空になるように拡張されます)。
  • Ddotglobこのglobを有効にします(隠しファイルは含まれていますが.含まれていません..)。
  • l+1:リンク番号が1より大きいファイルを選択します。
  • ^/: ファイル形式の除外目次

POSIXに対応:

find .//. ! -name . -prune -links +1 | grep -c //

(除外ディレクトリ! -type dに追加-prune

または以下を使用してls

(export LC_ALL=C; ls -Aqn | awk 'NR > 1 && $2 > 1 {n++}; END {print n}')

ディレクトリを除外するには、&& $1 !~ /^d/後に追加してください$2 > 1

おすすめ記事