අසන්නාගේ ඉල්ලීම පරිදි මෙය මෙතැන් සිට නැවත තැපැල් කරනු ලැබේ :
du --inodes -S | sort -rh | sed -n \
'1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'
ඔබට එකම ගොනු පද්ධතියේ රැඳී සිටීමට අවශ්ය නම්:
du --inodes -xS
මෙන්න උදාහරණ ප්රතිදානය:
15K /usr/share/man/man3
4.0K /usr/lib
3.6K /usr/bin
2.4K /usr/share/man/man1
1.9K /usr/share/fonts/75dpi
...
519 /usr/lib/python2.7/site-packages/bzrlib
516 /usr/include/KDE
498 /usr/include/qt/QtCore
487 /usr/lib/modules/3.13.6-2-MANJARO/build/include/config
484 /usr/src/linux-3.12.14-2-MANJARO/include/config
දැන් එල්එස් සමඟ:
කිහිප දෙනෙකු සඳහන් කළේ ඔවුන් සතුව යාවත්කාලීන කොරූටිල්ස් නොමැති බවත් --inodes විකල්පය ඔවුන්ට ලබා ගත නොහැකි බවත්ය. ඉතින්, මෙන්න ls:
ls ~/test -AiR1U |
sed -rn '/^[./]/{h;n;};G;
s|^ *([0-9][0-9]*)[^0-9][^/]*([~./].*):|\1:\2|p' |
sort -t : -uk1.1,1n |
cut -d: -f2 | sort -V |
uniq -c |sort -rn | head -n10
ඔබ කුතුහලයෙන් සිටී නම්, එම වෙහෙසකර බිට් එකේ හදවත සහ ආත්මය එක් එක් පුනරාවර්තන සෙවුම් ප්රති results ල තුළ එය සොයාගත් නාමාවලි නාමය regex
වෙනුවට ආදේශ කරයි . එතැන් සිට එය නැවත නැවතත් ඉනෝඩ සංඛ්යා මිරිකීමෙන් පසුව නැවත නැවත නාමාවලි නාම ගණනය කර ඒ අනුව වර්ග කිරීම පමණි.filename
ls's
මෙම -U
විකල්පය විශේෂයෙන් වර්ග නොකිරීමට වර්ග කිරීම සමඟ විශේෂයෙන් උපකාරී වන අතර ඒ වෙනුවට නාමාවලි ලැයිස්තුව මුල් අනුපිළිවෙලට ඉදිරිපත් කරයි - නැතහොත් වෙනත් වචන වලින් inode
අංක අනුව.
ඔබ -1
ලැයිස්තුවක් විග්රහ කිරීමට උත්සාහ කරන විට ඇතිවිය හැකි ලිපිගොනු නාමවල නව රේඛා හෝ වෙනත් දර්ශනීය අවාසනාවන්ත ගැටලු නොසලකා එය එක් පේළියකට එක් ප්රති result ලයක් සහතික කිරීම සඳහා ඇදහිය නොහැකි තරම් උපකාරී වේ.
ඇත්ත වශයෙන්ම -A
සියල්ලන්ටම සහ -i
ඉනෝඩ -R
සඳහා සහ පුනරාවර්තන සඳහා වන අතර එය එහි දිගු හා කෙටි වේ.
මේ සඳහා පාදක වන ක්රමය නම්, මම සෑම ls ගේ ගොනු නාමයක්ම එහි අඩංගු නාමාවලි නාමයෙන් sed වෙනුවට ආදේශ කිරීමයි. එතැනින් ඉදිරියට ... හොඳයි, මම ටිකක් නොපැහැදිලි ය. ඔබට මෙහි පෙනෙන පරිදි ලිපිගොනු නිවැරදිව ගණනය කරන බව මට විශ්වාසයි:
% _ls_i ~/test
> 100 /home/mikeserv/test/realdir
> 2 /home/mikeserv/test
> 1 /home/mikeserv/test/linkdir
මෙය මට du
විධානයට බොහෝ දුරට සමාන ප්රති results ල ලබා දෙයි :
ඩු:
15K /usr/share/man/man3
4.0K /usr/lib
3.6K /usr/bin
2.4K /usr/share/man/man1
1.9K /usr/share/fonts/75dpi
1.9K /usr/share/fonts/100dpi
1.9K /usr/share/doc/arch-wiki-markdown
1.6K /usr/share/fonts/TTF
1.6K /usr/share/dolphin-emu/sys/GameSettings
1.6K /usr/share/doc/efl/html
එල්එස්:
14686 /usr/share/man/man3:
4322 /usr/lib:
3653 /usr/bin:
2457 /usr/share/man/man1:
1897 /usr/share/fonts/100dpi:
1897 /usr/share/fonts/75dpi:
1890 /usr/share/doc/arch-wiki-markdown:
1613 /usr/include:
1575 /usr/share/doc/efl/html:
1556 /usr/share/dolphin-emu/sys/GameSettings:
මම හිතන්නේ include
කාරණය රඳා පවතින්නේ වැඩසටහන මුලින් බලන්නේ කුමන නාමාවලිය මතද යන්නයි - මන්ද ඒවා එකම ලිපිගොනු හා දෘඩ සබැඳි නිසාය. කරුණාව ඉහත දෙයට කැමතියි. මම ඒ ගැන වැරදියි - නමුත් මම නිවැරදි කිරීම සාදරයෙන් පිළිගනිමි ...
ඩු ඩෙමෝ
% du --version
> du (GNU coreutils) 8.22
පරීක්ෂණ නාමාවලියක් සාදන්න:
% mkdir ~/test ; cd ~/test
% du --inodes -S
> 1 .
සමහර ළමා නාමාවලි:
% mkdir ./realdir ./linkdir
% du --inodes -S
> 1 ./realdir
> 1 ./linkdir
> 1 .
ලිපිගොනු කිහිපයක් සාදන්න:
% printf 'touch ./realdir/file%s\n' `seq 1 100` | . /dev/stdin
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
සමහර දෘඩ සබැඳි:
% printf 'n="%s" ; ln ./realdir/file$n ./linkdir/link$n\n' `seq 1 100` |
. /dev/stdin
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
දෘඩ සබැඳි දෙස බලන්න:
% cd ./linkdir
% du --inodes -S
> 101
% cd ../realdir
% du --inodes -S
> 101
ඒවා තනිවම ගණන් කර ඇත, නමුත් එක් නාමාවලියක් ඉහළට යන්න ...
% cd ..
% du --inodes -S
> 101 ./realdir
> 1 ./linkdir
> 1 .
ඉන්පසු මම මගේ ධාවන පිටපත පහළින් ධාවනය කළෙමි:
> 100 /home/mikeserv/test/realdir
> 100 /home/mikeserv/test/linkdir
> 2 /home/mikeserv/test
සහ ග්රේම්ස්:
> 101 ./realdir
> 101 ./linkdir
> 3 ./
ඉතින් මම හිතන්නේ මෙයින් පෙනෙන්නේ ඉනෝඩ ගණනය කිරීමට ඇති එකම ක්රමය ඉනෝඩය බවයි. ලිපිගොනු ගණනය කිරීම යනු ඉනෝඩ ගණන් කිරීම නිසා, ඔබට දෙවරක් ඉනෝඩ ගණන් කළ නොහැක - ලිපිගොනු නිවැරදිව ගණනය කිරීම සඳහා එක් වරකට වඩා ගණනය කළ නොහැක.