සියලුම ලිපිගොනු විශාල සිට කුඩා දක්වා අනුපිළිවෙලින් ලැයිස්තුගත කිරීමට මා කැමති අතර ලිපිගොනු කිසියම් ෆෝල්ඩරයක ඕනෑම තැනක තිබිය හැකිය.
man ls
:-S sort by file size
සියලුම ලිපිගොනු විශාල සිට කුඩා දක්වා අනුපිළිවෙලින් ලැයිස්තුගත කිරීමට මා කැමති අතර ලිපිගොනු කිසියම් ෆෝල්ඩරයක ඕනෑම තැනක තිබිය හැකිය.
man ls
:-S sort by file size
Answers:
සරලව වැනි දෙයක් භාවිතා කරන්න:
ls -lS /path/to/folder/
ප්රාග්ධනය එස් .
මෙය ගොනු ප්රමාණය අනුව වර්ග කරයි.
මෙයද බලන්න:
-S sort by file size
ඔබට ප්රතිලෝම අනුපිළිවෙලට වර්ග කිරීමට අවශ්ය නම් , -r
ස්විචය එක් කරන්න .
යාවත්කාලීන කිරීම:
නාමාවලි බැහැර කිරීම සඳහා (සහ ගොනු නාම හෝ සිම්ලින්ක් ඉලක්ක කිසිවක් නව රේඛා අක්ෂර අඩංගු නොවේ නම්):
ls -lS | grep -v '^d'
යාවත්කාලීන 2:
ෆෝල්ඩර විය හැකි සංකේතාත්මක සබැඳි තවමත් එය පෙන්වන ආකාරය මම දැන් දකිමි. සංකේතාත්මක සබැඳි සෑම විටම සබැඳියේ මෙන් l අකුරකින් ආරම්භ වේ.
A සඳහා පෙරීමට විධානය වෙනස් කරන්න -
. මෙය සාමාන්ය ලිපිගොනු පමණක් ඉතිරි කළ යුතුය:
ls -lS | grep '^-'
මගේ පද්ධතියේ මෙය සාමාන්ය ගොනු පමණක් පෙන්වයි.
යාවත්කාලීන 3:
පුනරාවර්තනය එකතු කිරීම සඳහා, මම sort
විධානයට රේඛා වර්ග කිරීම අතහැර දමා 5 වන තීරුව භාවිතා කර එය වර්ග කිරීමට කියමි.
ls -lR | grep '^-' | sort -k 5 -rn
-rn
ඉහළම විශාලතම ලිපිගොනු ලබා ගැනීම සඳහා ප්රතිලෝම සහ සංඛ්යාත්මක වේ. මෙම විධානයේ පහළ පැත්ත නම් එය ලිපිගොනු වල සම්පූර්ණ මාර්ගය නොපෙන්වයි.
ඔබට ලිපිගොනු වල සම්පූර්ණ මාර්ගය අවශ්ය නම්, මේ වගේ දෙයක් භාවිතා කරන්න:
find . -type f -exec du -h {} + | sort -r -h
මෙම find
විධානය ඇත්තෙන් වෙනසට භාජනය සියලු උප බහලුම් තුල සියළුම ගොනු සොයා ගන්නේ .
හා ඇමතුම් du -h
(තේරුම -humanreadable තැටි භාවිතය නැවත) හා එවකට ආකාරයක ප්රතිදානය. ඔබගේ find
/ sort
සහාය නොදක්වන්නේ නම් -h
, du -k
සහ ආදේශ කරන්න sort -rn
. ප්රමාණය සහ තැටි භාවිතය එකම දෙයක් නොවන බව සලකන්න .
du
ගොනු ප්රමාණයට වඩා වෙනස් තැටි භාවිතය ලබා දෙයි. (GNU) සමඟ du -h
, සංඛ්යාත්මක වර්ග කිරීම ක්රියා නොකරනු ඇත (ඔබට -h
වර්ග කිරීමට GNU විකල්පය අවශ්ය වේ). xargs අපේක්ෂා කළ හැකි වචන ලැයිස්තුවක් ආදානය ලෙස අපේක්ෂා කරයි, එබැවින් ගොනු නාමවල හිස් හෝ උපුටා ගත් අක්ෂර තිබේ නම් එය ක්රියා නොකරනු ඇත.
find . -type f -print0 | xargs -0 du -h | sort -rh
. ඔබට අවශ්ය නම් විශාලතම ගොනු 30 කියන්න : find . -type f -print0 | xargs -0 du -h | sort -rh | head -n 30
.
+ |
වාක්ය ඛණ්ඩය පැහැදිලි කළ + | sort -r -h
හැකිද?
ඔබට සොයා ගැනීම සහ වර්ග කිරීම වැනි දෙයක් භාවිතා කළ හැකිය.
find . -type f -ls | sort -r -n -k7
(මෙම -ls
සම්මත නොවන නමුත් බොහෝ සොයා සඳහා, GNU එක් පමණක් නොව හමු වී ඇත. දී GNU සොයා සහ වෙනත් අය, ඒ සඳහා ඒ හා සමාන දෙයක් ප්රදර්ශනය විකල්පය ls -li
කිහිපයක් හැරුණු සමග, උදාහරණයක් වශයෙන්, ACLs සමග ගොනු + සමඟ සලකුණු නොමැත)
ගොනුවේ නම් වල නව රේඛා අක්ෂර අඩංගු විය හැකි නම්, GNU සොයා ගැනීම සහ GNU වර්ග කිරීම සමඟ:
find . -type f -ls -printf '\0' | sort -zk7rn | tr -d '\0'
Zsh සහ GNU ls සමඟ:
ls -ldU -- **/*(.OL)
කොහෙද (.OL)
යනු glob සුදුසුකම් , .
තෝරා ගැනීමට නිත්ය පමණක් ගොනු OL
(ගොනු විශාලත්වය, දිග විසින් නියෝගයක් ආපසු හැරවීම සඳහා o
, සඳහා අවතීර්ණය සඳහා O
අවරෝහණ සඳහා).
(zsh හි පැරණි අනුවාද වල ගොනු ප්රමාණයන් 2 ^ 32 ට වඩා වැඩි බව සලකන්න).
සමහර මෙහෙයුම් පද්ධති වලට විධානයකට ලබා දෙන තර්ක ලැයිස්තුවේ ප්රමාණයට සීමාවක් ඇත. එවැනි අවස්ථාවලදී ඔබට අවශ්ය වන්නේ:
autoload -U zargs
zargs ./**/*(.OL) -- ls -ldU
ඔබට අවශ්ය වන්නේ ගොනු ලැයිස්තුවක් මිස සවිස්තරාත්මක ප්රතිදානය නොවේ නම්, එසේ කරන්න:
print -rl -- **/*(.OL)
ඔබ (ආරම්භ වන නමක් ඇති තිතක්, සැඟවුණ ගොනු අඩංගු කිරීමට අවශ්ය නම් .
හා ..
) සහ මෙන්ම සඟවා බහලුම් සඳහා ගවේෂණය කිරීම, එකතු කරන්න D
globbing සුදුසුකම්:
print -rl -- **/*(.DOL)
.OL
? එය විධානයේ කොටසක්ද?
ls (GNU coreutils) 8.25
සහ zsh 5.1.1 (x86_64-ubuntu-linux-gnu)
. එය ඇතැම් අනුවාද සඳහා පමණක් වැඩ කරන්නේ ls
සහ zsh
?
ප්රමාණයෙන් ඉහළට ගොනු ලැයිස්තුගත කිරීම වනුයේ:
ls -lSr
විකල්ප:
“ලිපිගොනු කිසියම් ෆෝල්ඩරයක ඕනෑම තැනක තිබිය හැකිය” යනුවෙන් පැවසීමෙන් ඇඟවෙන්නේ ආරම්භක නාමාවලිය (ෆෝල්ඩරය) තුළ ඇති සියලුම නාමාවලි (ෆෝල්ඩර) පුනරාවර්තනය වීමට ඔබට අවශ්ය බවයි. මෙය කිරීමට find
අදහස් කරන්නේ මෙයයි:
find . -type f -exec ls -lSd {} +
මෙය වත්මන් වැඩ කරන ඩිරෙක්ටරියේ ( ) සියලුම ගොනු "සොයා ගනී" .
. සොයාගත් සෑම ගොනුවක් සඳහාම, සොයාගත් ls
වස්තූන් ප්රමාණ අනුපිළිවෙලට වර්ග කිරීම සඳහා ක්රියාවලියක් ක්රියාත්මක වේ. මෙම +
කිරීමට ටර්මිනේටර් -exec
බහු තර්ක කිරීමට ලැයිස්තුවක් ලෙස සම්මත කර ගැනීමට නියමිත හේතු ls
. ඔබේ ඩිරෙක්ටරියේ (ෆෝල්ඩරයේ) ඉතා විශාල ලිපිගොනු සංඛ්යාවක් අඩංගු නොවේ නම්, ඔබට එක් ලැයිස්තුවක් තිබිය යුතුය (මේ අනුව එක් ක්රියාවලියක් ෆෝක් කර ඇත), එය ඔබ කැමති ප්රති result ලයට මග පාදයි.
මේවා උත්සාහ කරන්න, එය මට හොඳින් ක්රියාත්මක වේ.
$ find /home/san -type f -printf '%s %p\n'| sort -nr | head -n 10
# find /root -type f -exec ls -lS {} + | head -n 10 | awk '{ print $5, $9 }'
පරිපූර්ණ පිළිතුරක් නොව යම් දුරකට ක්රියා කරයි
$ ls -lS |grep '^-' | head -n 6
sed
ප්රතිදානය කපා හැරීමට භාවිතා කරමි
ගොනු ලැයිස්තු දර්ශනය ප්රතිලෝම අනුපිළිවෙලින්: ls -lSrh
නඟින අනුපිළිවෙල සඳහා: ls -lSh
ටික කලකට පෙර මම මේ තරමට යමක් ලිව්වෙමි. ඔබට කොපමණ ගොනු ලැයිස්තුගත කළ යුතුද යන්න සඳහන් කිරීමට තර්කයක් ඉදිරිපත් කළ හැකිය, නැතහොත් ටයිප් කරන්න big
, කුමන අවස්ථාවකදී ඔබට 10 ක් ලැබේද යන්න.
big () {
NUM_FILES=10;
if [ $1 ]; then
NUM_FILES=$1;
fi;
du | sort -nr | head -n $NUM_FILES
}
ඩෙල්ගේ පිළිතුරට සහ ස්ටෙෆාන් චසෙලාස්ගේ ප්රකාශයට එකතු කිරීම ...
find -print0
සමඟ ඒකාබද්ධව xargs -0
හිස් / අවකාශ / වොට්නොට් සඳහා සහය එක් කරයි.
du -h | sort -rn
විවිධ බයිට් ගුණකයන් අතර නිසි ලෙස වර්ග නොකෙරේ, උදා: 1.1M 128K ට පසුව පෙන්වනු ඇත, එය වැරදිය.
sort -rh
(--human-numeric-sort) ඒ ගැන සැලකිලිමත් වන නමුත් එය ක්රියාත්මක වන්නේ GNU හි අනුවාදය මත පමණි.
පහත දැක්වෙන විධානයන් අපේක්ෂිත ප්රතිදානය ලබා දෙනු ඇත.
මිනිස් කියවිය හැකි, ග්නූ වර්ග කිරීම / ලිනක්ස් මත:
find . -type f -print0 | xargs -0 du -h | sort -rh
කිලෝබයිට් ඒකක වල, BSD / OSX / වෙනත් අය මත:
find . -type f -print0 | xargs -0 du -k | sort -rn
BSD / OSX සඳහා, https://unix.stackexchange.com/a/188375/82895 ද බලන්න .
මුල් ප්රශ්නයේ විචල්යතාවයක් ලෙස, ඔබට උප බහලුම්වල ගොනුවල සමුච්චිත ප්රමාණය දැකීමට අවශ්ය නම්:
#!/bin/bash
find ${1:-.} -maxdepth 1 -type d -exec du -sm {} \; | sort -nr
ප්රමාණයන් මෙගාබයිට් වල පෙන්වනු ඇත ( m
in du -sm
). විසින් පිළිගත් වෙනත් වටිනාකම් du
වේ -k
, කිලෝ බයිට් අඩු කිරීම සඳහා -g
අවරෝහණ සඳහා. -h
මිනිසුන්ට කියවිය හැකි සංදර්ශකය සඳහා භාවිතා කිරීම කළ නොහැක්කේ එය වර්ග කිරීම බිඳ දමනු ඇති බැවිනි.
මෙගාබයිට් සඳහා sed
එකතු කිරීම M
සඳහා භාවිතා කරන අනුවාදයක් මෙන්න :
find ${1:-.} -maxdepth 1 -type d -exec du -sm {} \; | sort -nr | sed -E 's/^([0-9]+)/\1M/g'
පෙන්විය යුතු නාමාවලිය සකසා ${1:-.}
ඇති අතර එමඟින් පළමු විධාන රේඛා තර්කය ලබා දී තිබේ නම් හෝ තර්ක නොමැතිව කැඳවනු ලැබුවහොත් වත්මන් නාමාවලිය භාවිතා කරන්න.
සටහන: මෙය ලිපිගොනු විශාල ප්රමාණයක් සමඟ දිගු කාලයක් ගතවනු ඇත. විකල්පය -type d
මඟින් උප බහලුම් පමණක් ලැයිස්තුගත කර වත්මන් ෆෝල්ඩරයේ ගොනු බැහැර කරනු ඇත; වත්මන් ෆෝල්ඩරයේ ඇති ගොනු බැලීමට ඔබට අවශ්ය නම් එය ඉවත් කරන්න.
සටහන:
ncdu
බොහෝ ලිනක්ස් ගබඩාවල (උබුන්ටු / ඩෙබියන් මතapt install ncdu
) මෙන්ම ඔක්ස් (brew install ncdu
) මතද භාවිතා කිරීමට ඔබට අවශ්ය විය හැකිය .