Како добити величину датотеке или директоријума у Линуку
Када користите Линук ду
наредба, добијате и стварну употребу диска и стварну величину датотеке или директоријума. Објаснићемо зашто ове вредности нису исте.
Стварна употреба диска и права величина
Величина датотеке и простор који заузима на вашем тврдом диску ретко су исти. Простор на диску је додељен у блоковима. Ако је датотека мања од блока, још увек јој се додељује читав блок јер систем датотека нема мању јединицу некретнина за употребу.
Ако величина датотеке није тачно вишеструка од блокова, простор који користи на чврстом диску мора увек да се заокружи на следећи цео блок. На пример, ако је датотека већа од два блока, али мања од три, потребно је три блока простора за њено складиштење.
У односу на величину датотеке користе се два мерења. Прва је стварна величина датотеке, што је број бајтова садржаја који чине датотеку. Друга је стварна величина датотеке на тврдом диску. Ово је број блокова система датотека неопходних за чување те датотеке.
Пример
Погледајмо једноставан пример. Преусмерићемо један знак у датотеку да бисмо креирали малу датотеку:
ецхо "1"> геек.ткт
Сада ћемо користити списак дугог формата,лс
, да погледамо дужину датотеке:
лс -л геек.ткт
Дужина је нумеричка вредност која следи даве даве
уноса, што је два бајта. Зашто су два бајта када смо у датотеку послали само један знак? Погледајмо шта се догађа у датотеци.
Користићемо хекдумп
наредба, која ће нам дати тачан број бајтова и омогућити да "видимо" знакове који се не штампају као хексадецималне вредности. Такође ћемо користити -Ц
(канонска) опција присиљавања излаза да приказује хексадецималне вредности у телу излаза, као и њихове алфанумеричке еквиваленте карактера:
хекдумп -Ц геек.ткт
Излаз нам показује да, почевши од офсета 00000000 у датотеци, постоји бајт који садржи хексадецималну вредност 31 и онај који садржи хексадецималну вредност 0А. Десни део излаза приказује ове вредности као алфанумеричке знакове, где год је то могуће.
Хексадецимална вредност 31 користи се за представљање цифрене. Хексадецимална вредност 0А се користи за представљање знака Лине Феед, који не може бити приказан као алфанумерички знак, па је уместо тога приказан као тачка (.). Знак Лине Феед додаје одјек
. Подразумевано,одјек
започиње нову линију након што прикаже текст који треба да напише у прозор терминала.
То се поклапа са излазом излс
и слаже се са дужином датотеке од два бајта.
ПОВЕЗАН:Како користити команду лс за попис датотека и директорија на Линуку
Сада ћемо користити ду
наредба за преглед величине датотеке:
ду геек.ткт
Каже да је величина четири, али четири од чега?
Постоје блокови, а затим постоје блокови
Када ду
извештава о величинама датотека у блоковима, величина коју користи зависи од неколико фактора. Можете одредити коју величину блока треба користити у командној линији. Ако не форсирате ду
да бисте користили одређену величину блока, следи низ правила да бисте одлучили који ћете користити.
Прво проверава следеће променљиве окружења:
- ДУ_БЛОЦК_СИЗЕ
- БЛОЦК_СИЗЕ
- БЛОЦКСИЗЕ
Ако било који од ових постоји, поставља се величина блока и ду
престаје да проверава. Ако ниједна није постављена,ду
подразумевано је величина блока од 1.024 бајта. Осим ако то није променљива околине тзв ПОСИКСЛИ_ЦОРРЕЦТ
је постављено. Ако је то случај, ду
подразумевано је величина блока од 512 бајтова.
Па, како да сазнамо која се користи? Можете да проверите сваку променљиву окружења да бисте то решили, али постоји бржи начин. Упоредимо резултате са величином блока који систем датотека користи уместо тога.
Да бисмо открили величину блока који систем датотека користи, користићемо туне2фс
програм. Тада ћемо користити -л
(листа суперблок листе), провуците излаз греп
, а затим одштампајте редове који садрже реч „Блокирај“.
У овом примеру ћемо погледати систем датотека на првој партицији првог чврстог диска, сда1
, а ми ћемо морати да користимо судо
:
судо туне2фс -л / дев / сда1 | греп Блоцк
Величина блока система датотека је 4.096 бајтова. Ако то поделимо са резултатом из којег смо добили ду
(четири), показуједу
подразумевана величина блока је 1.024 бајта. Сада знамо неколико важних ствари.
Прво, знамо да је најмања количина непокретности система датотека која се може посветити чувању датотеке 4.096 бајтова. То значи да чак и наша мајушна двобајтна датотека заузима 4 КБ простора на чврстом диску.
Друга ствар коју треба имати на уму су апликације посвећене извештавању на статистикама чврстог диска и система датотека, као што су ду
, лс
, итуне2фс
, могу имати различите појмове шта значи „блок“. Тхе туне2фс
апликација извештава о истинским величинама блокова система датотека, доклс
и ду
могу бити конфигурисани или приморани да користе друге величине блокова. Те величине блокова нису намењене повезивању са величином блока датотечног система; они су само „комади“ које те наредбе користе у свом излазу.
Коначно, осим коришћења различитих величина блокова, одговори из ду
и туне2фс
преносе исто значење. Тхе туне2фс
резултат је био један блок од 4.096 бајтова, а ду
резултат је био четири блока од 1.024 бајта.
Користећи ду
Без параметара или опција командне линије, ду
наводи укупни простор на диску који користе тренутни директоријум и сви поддиректоријуми.
Погледајмо пример:
ду
Величина се наводи у подразумеваној величини блока од 1.024 бајта по блоку. Премоштено је цело дрво поддиректоријума.
Користећи ду
на другом директоријуму
Ако желишду
да бисте извештавали о различитом директоријуму од тренутног, можете да пренесете путању до директоријума у командној линији:
ду ~ / .цацх / еволуција /
Користећи ду
на одређеној датотеци
Ако желишду
да бисте извештавали о одређеној датотеци, пренесите путању до те датотеке у командној линији. Такође можете проследити образац љуске одабраној групи датотека, као што је * .ткт
:
ду ~ / .басх_алиасес
Извештавање о датотекама у директоријумима
Имати ду
извештај о датотекама у тренутном директоријуму и поддиректоријумима, користите -а
опција (све датотеке):
ду -а
За сваки директоријум наводи се величина сваке датотеке, као и укупан износ за сваки директоријум.
Ограничавање дубине стабла директоријума
Можете рећи ду
да попише дрво директоријума до одређене дубине. Да бисте то урадили, користите -д
опција (максимална дубина) и наведите вредност дубине као параметар. Имајте на уму да се сви поддиректоријуми скенирају и користе за израчунавање пријављених укупних износа, али нису сви наведени. Да бисте поставили максималну дубину директоријума за један ниво, користите ову наредбу:
ду -д 1
Излаз наводи укупну величину тог поддиректоријума у тренутном директоријуму, а такође пружа и укупан износ за сваки од њих.
Да бисте директоријуме ставили на један ниво дубље, користите ову наредбу:
ду -д 2
Подешавање величине блока
Можете користити блокирати
опција за подешавање величине блока за ду
за тренутну операцију. Да бисте користили величину блока од једног бајта, користите следећу наредбу да бисте добили тачне величине директорија и датотека:
ду --блоцк = 1
Ако желите да користите блок величине један мегабајт, можете да користите -м
(мегабајт) опција, што је исто као --блоцк = 1М
:
ду -м
Ако желите да се величине пријаве у најприкладнијој величини блока у складу са простором на диску који користе директоријуми и датотеке, користите -х
(човеку читљива) опција:
ду -х
Да бисте видели очигледну величину датотеке, а не количину простора на чврстом диску који се користи за складиштење датотеке, користите --апарент-сизе
опција:
ду --привидна величина
Можете ово комбиновати са -а
опција (све) да бисте видели привидну величину сваке датотеке:
ду --привидна величина -а
Свака датотека је наведена, заједно са њеном привидном величином.
Приказивање само укупних вредности
Ако желишду
да бисте пријавили само укупан број за директоријум, користите -с
опција (сажети). Ово такође можете комбиновати са другим опцијама, као што је -х
(човеку читљива) опција:
ду -х -с
Овде ћемо га користити са --привидна величина
опција:
ду --апарент-сизе -с
Приказ времена модификације
Да бисте видели време и датум настанка или последње измене, користите --време
опција:
ду --тиме -д 2
Чудни резултати?
Ако видите чудне резултате од ду
, посебно када унакрсне референце упућујете на излаз из других наредби, то је обично због различитих величина блокова на које се могу поставити различите наредбе или оне на које се подразумевају. Узрок томе могу бити и разлике између стварних величина датотека и простора на диску потребног за њихово складиштење.
Ако требате да подударите излаз других наредби, експериментишите са --блокирати
опција у ду
.