ls-команда: как отобразить размер файла в мегабайтах?

<p>в unix (tru64), как заставить команду <code>ls</code> показывать размер файла в мегабайтах? в настоящее время я могу показать его в байтах, используя следующее:</p><pre><code>ls -la </code></pre>

<p>может быть, вам достаточно <code>-h</code>:</p><blockquote> <p>-час<br> при использовании с параметром -l используйте суффиксы единиц: байты, килобайты, мегабайты, гигабайты, терабайты и petabyte, чтобы уменьшить количество цифр до трех или менее, используя основание 2 для размеры.</p> </blockquote><pre><code>ls -lah </code></pre><p>общий совет: используйте <code>man commandname</code>, чтобы прочитать руководство/справку по определенной команде, например, здесь <code>man ls</code>.</p>

<p><code>ls --block-size=m</code> печатает размеры в мегабайтах, но показывает 1 мб также для всего, что меньше 1 мб. я не уверен, что эта опция приемлема в вашей unix-версии ls.</p><p>на самом деле <code>ls -lh</code> также печатает размеры в гигабайтах, если файл достаточно велик (ну в любом случае: на<strong> linux </strong>64bit это работает:>)</p><p>на боковом узле: <code>du -sh *</code> печатает также размеры каталогов в текущем каталоге.</p>

<p>вам придется использовать <code>awk</code>, чтобы сделать математику для вас:</p><pre><code>ls -l | awk 'begin{mega=1048576} $5 >= mega {$5 = $5/mega "mb"} {print}' </code></pre><p>это не повлияет на вывод файлов, размер которых меньше <code>mega</code>.</p><p>возможно, вам придется изменить номер поля в соответствии с тем, как выстроена ваша <code>ls</code>. вы можете изменить <code>mega</code> на «1000000», если это ваше предпочтение.</p><p>это напечатает больше десятичных разрядов, чем вы, вероятно, хотите. вы могли бы реализовать функцию округления.</p>

<p>попробуйте <code>ls -shr</code> для рекурсивного читабельного формата.</p>

<p>попробуйте <code>ls -lash</code>, он печатает размеры в удобочитаемом формате</p>

<p><code>du -sm filename.txt</code></p>

<p>вы также можете ввести</p><pre><code>du -sh ./* </code></pre><p>при этом будут перечислены все папки в текущем каталоге в удобочитаемом формате, включая более привычные размеры файлов в килобайтах, мб, гб.</p>

<p>если вам нужен только размер определенного файла, тогда команда, тривиальная экстраполяция предыдущих ответов, выглядит так:</p><pre>ls -sh <i>имя файла (ов)</i></pre><p><code>-s</code> предназначен для размера, а <code>h</code> предназначен для чтения человеком (как упоминалось выше несколько раз).</p><p>вывод будет выглядеть так:</p><pre><code>753m myfilename </code></pre><p>если вы пропустите имя файла (ов), он перечислит каталог, поместив размер каждого файла рядом с его именем - в отличие от того, что делает <code>ls -la</code>, когда вызывается без аргументов имени файла.</p><p>надеюсь это поможет.</p>

<pre><code>ls -l --block-size=mb </code></pre><p>для параметра <code>--block-size</code>:</p><ul> <li>используйте <code>mb</code> для 10 ^ 6</li> <li>используйте только <code>m</code> для 2 ^ 20</li> </ul>

<p>если вас интересует только размер файла, и вам не нужно использовать команду <code>ls</code>, попробуйте следующее:</p><pre><code># echo "hello world" > file.txt # ls -l file.txt -rw-r--r-- 1 user user 12 mar 10 11:32 file.txt # stat --printf='%s\n' file.txt 12 </code></pre><p>это напечатает размер файла без необходимости разбора чего-либо.</p>