X බයිට් වලට වඩා විශාල / කුඩා ගොනු සොයා ගන්නේ කෙසේද?


249

ටර්මිනලයක, x බයිට් වලට වඩා විශාල හෝ කුඩා ගොනු සොයා ගන්නේ කෙසේද?

මම හිතන්නේ මට ඒ වගේ දෙයක් කරන්න පුළුවන්

find . -exec ls -l {} \;

ඉන්පසු awkගොනුවේ ප්‍රමාණය අනුව පෙරීමට ප්‍රති result ලය නල කරන්න . නමුත් මීට වඩා පහසු ක්‍රමයක් තිබිය යුතු නොවේද?

Answers:


395

භාවිත:

find . -type f -size +4096c

බයිට් 4096 ට වඩා විශාල ගොනු සොයා ගැනීමට.

හා :

find . -type f -size -4096c

බයිට් 4096 ට වඩා කුඩා ගොනු සොයා ගැනීමට.

ප්‍රමාණයේ ස්විචයෙන් පසු + සහ - වෙනස සැලකිල්ලට ගන්න.

මෙම -sizeස්විචය මෙසේ පැහැදිලි කලේ ය:

-size n[cwbkMG]

    File uses n units of space. The following suffixes can be used:

    `b'    for 512-byte blocks (this is the default if no suffix  is
                                used)

    `c'    for bytes

    `w'    for two-byte words

    `k'    for Kilobytes       (units of 1024 bytes)

    `M'    for Megabytes    (units of 1048576 bytes)

    `G'    for Gigabytes (units of 1073741824 bytes)

    The size does not count indirect blocks, but it does count
    blocks in sparse files that are not actually allocated. Bear in
    mind that the `%k' and `%b' format specifiers of -printf handle
    sparse files differently. The `b' suffix always denotes
    512-byte blocks and never 1 Kilobyte blocks, which is different
    to the behaviour of -ls.

11
Ay ජේ: "ටෙස්ට්" කොටසේ ආරම්භයේ දී මිනිසාගෙන් සොයාගත හැකි දේ : "සංඛ්‍යාත්මක තර්ක n ට වඩා විශාල සඳහා + n ලෙසත්, -n ට වඩා අඩු සඳහාත්, n හරියටම n සඳහාත් නියම කළ හැකිය."
වැඩිදුර දැනුම් දෙන තුරු විරාමය.

4
මෑන් පිටුව එය ඉහළට යොමු කර ඇති අතර + සහ - යන්නෙන් සංඛ්‍යාත්මක ('n') තර්ක ගන්නා සියලු ස්විචයන්ට + සහ - අදාළ විය හැකි බව විස්තර කරයි. (මෙය විස්තර කර ඇති කොටසේ ආරම්භය සොයා ගැනීමට මෑන් පිටුවේ ටෙස්ට් සොයන්න)
ස්ලාර්ටිබාර්ට්ෆාස්ට්

1
Enn ඩෙනිස් විලියම්සන්: අමුතු, + සහ - ඕඑස් එක්ස් හි වැඩ කරයි, නමුත් මෑන් පිටුවට ටෙස්ට් අංශය නොමැත. ඇත්ත වශයෙන්ම, ඔබගේ සබැඳිය හා සසඳන විට එය විශාල කැබැල්ලක් අස්ථානගත වී ඇත, එහි ටෙස්ට්, ක්‍රියා, ක්‍රියාකරුවන්, වෙනත් අය නොමැත.
සිවිලිමේ බළලා

1
මෑන් පිටුවේ GNU අනුවාදයේ "ටෙස්ට්" කොටස ඇති බව පෙනේ, නමුත් BSD අනුවාදය එසේ නොවේ. linuxmanpages.com/man1/find.1.php
ජේ

8
මම දැනගත්තා BSD man පිටු වල +/- දේ විස්තර කරන බව. "ප්‍රාථමික" කොටසේ අවසානයේ එහි මාර්ගය. - සංඛ්‍යාත්මක තර්කයක් ගන්නා සියලුම ප්‍රාථමිකයන් ඊට පෙර ප්ලස් ලකුණක් (“+”) හෝ us ණ ලකුණක් (“-”) ලබා දීමට ඉඩ දෙයි. පූර්ව ප්ලස් ලකුණක අර්ථය “n ට වඩා වැඩි”, පූර්ව us ණ ලකුණක් “n ට වඩා අඩු” සහ “හරියටම n” යන්නෙහි අර්ථය නොවේ
ජේ

9

මම හිතන්නේ findAWK වෙත නල මාර්ගයක් නොමැතිව තනිවම ප්‍රයෝජනවත් වේවි. උදාහරණයක් වශයෙන්,

find ~ -type f -size +2k  -exec ls -sh {} \;

ටිල්ඩ් මඟින් ඔබේ සෙවීම ආරම්භ කිරීමට අවශ්‍ය ස්ථානය පෙන්වන අතර ප්‍රති result ලය පෙන්විය යුත්තේ කිලෝබයිට් 2 ට වඩා වැඩි ගොනු පමණි.

එය මන ancy කල්පිත කිරීමට, ඔබට -execවෙනත් විධානයක් ක්‍රියාත්මක කිරීමට විකල්පය භාවිතා කළ හැකිය, එනම් මෙම නාමාවලි ඒවායේ ප්‍රමාණයන් සමඟ ලැයිස්තු ගත කිරීමයි.

වැඩි විස්තර සඳහා, man පිටුවfind කියවන්න .


5

AWK ඇත්තටම මේ වගේ දෙයක් සඳහා සෑහෙන්න පහසුයි. ඔබ ඇසූ පරිදි ගොනු ප්‍රමාණ පරික්ෂා කිරීම සම්බන්ධයෙන් ඔබට එය කළ හැකි කරුණු කිහිපයක් මෙන්න:

බයිට් 200 ට වඩා වැඩි ගොනු ලැයිස්තුගත කරන්න:

ls -l | awk '{if ($5 > 200) print $8}'

බයිට් 200 ට අඩු ගොනු ලැයිස්තුගත කර ලැයිස්තුව ගොනුවකට ලියන්න:

ls -l | awk '{if ($5 < 200) print $8}' | tee -a filelog

බයිට් 0 ක ගොනු ලැයිස්තුගත කරන්න, ලැයිස්තුව ගොනුවකට පටිගත කර හිස් ගොනු මකන්න:

ls -l | awk '{if ($5 == 0) print $8}' | tee -a deletelog | xargs rm


(හෝ ) teeවැනි ගොනුවකට පයිප්ප දැමීම සහ යලි හරවා යැවීම අතර වෙනස කුමක්ද? ls -l > filelogls -l >> filelog
ඔමාර් ඔත්මන්

3

බයිට් 2000 ට වඩා විශාල:

du -a . | awk '$1*512 > 2000 {print $2}'

බයිට් 2000 ට අඩු:

du -a . | awk '$1*512 < 2000 {print $2} '

ඩු වාඩිලාගෙන සිටින තැටියේ ඉඩ ලබා දෙන බැවින් මෙය නරක ය. මෙය ගොනු ප්‍රමාණයකට සමාන නොවේ. උදා: ඔබ සතුව සම්පීඩිත ගොනු පද්ධතියක් තිබේ නම් (btrfs / zfs) du ඔබට ls වෙතින් වෙනස් ප්‍රති result ලයක් ලබා දෙනු ඇත.
chris scott
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.