සියලුම ලිපිගොනු විශාල සිට කුඩා දක්වා අනුපිළිවෙලින් ලැයිස්තුගත කිරීමට මා කැමති අතර ලිපිගොනු කිසියම් ෆෝල්ඩරයක ඕනෑම තැනක තිබිය හැකිය.
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)
ඔබ (ආරම්භ වන නමක් ඇති තිතක්, සැඟවුණ ගොනු අඩංගු කිරීමට අවශ්ය නම් .හා ..) සහ මෙන්ම සඟවා බහලුම් සඳහා ගවේෂණය කිරීම, එකතු කරන්න Dglobbing සුදුසුකම්:
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
ප්රමාණයන් මෙගාබයිට් වල පෙන්වනු ඇත ( min 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) මතද භාවිතා කිරීමට ඔබට අවශ්ය විය හැකිය .