私は-lsとfindコマンドを使ってディレクトリのハードリンクの発生回数を数えようとしました。
ls -liコマンドを使用して2より大きいすべてのリンク数を物理的に計算することに加えて、これを行う簡単な方法はありますか?
ベストアンサー1
そしてzsh
:
(){echo $#} *(NDl+1)
.
カウントされませんのでご注意ください..
。
ディレクトリ(ほとんどのファイルシステムでは常にハードリンク)を計算したくない場合は、に変更します*(NDl+1^/)
。
(){echo $#}
引数の数を出力する匿名関数*(...)
glob修飾子を持つglobN
:nullglob
このglobを有効にします(一致するものがない場合は空になるように拡張されます)。D
:dotglob
この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
。