Это работает на меня;-! (в текущей среде MingW)
echo barney | grep --color=always barney | sed -n '1,$p'
**barney**
# barney отображается как красный текст
$ grep --version
GNU grep 2.5.4
$ sed --version
GNU sed version 4.2.1
Вот быстрое исправление, используйте du + вид. Попробуйте это:
du -smc * | sort -n
Это проигнорирует скрытые файлы, но это - другой легкая фиксация:
du -smc .[^.] .??* * | sort -n
Это может вызвать предупреждения о том, если один или несколько вышеупомянутых шаблонов не соответствует файлу. Первый шаблон .[^.]
соответствия все два символьных имен файлов, запускающиеся с. за исключением.., второй шаблон, .??*
соответствия весь трехбуквенный или больше имен файлов, запускающихся с. и * соответствует всем файлам, не запускающимся с. Для более сложного списка, такого как нахождение всего файла, больше, чем X через целую файловую систему или ведение списка роста файловой системы, у меня есть некоторый сделай сам сценарий оболочки, который я записал и могу совместно использовать если Ваше заинтересованное.
Перечислять файлы где угодно под /tmp
, отсортированный по размеру:
find /tmp -type f -exec du -k {} + | sort -k1n -k2
Перечислить файлы и деревья каталогов сразу под /tmp
, отсортированный по размеру:
du -k /tmp/..?* /tmp/.[!.]* /tmp* 2>/dev/null | sort -k1n -k2
Перечислять все файлы и деревья каталогов где угодно под /tmp
, отсортированный по размеру:
du -ak /tmp | sort -k1n -k2
(Пример для иллюстрирования различия между тремя командами: если существует файл /tmp/dir/file
, первые списки команд /tmp/dir/file
, вторые списки /tmp/dir
, и третьи списки оба.)
Все команды выше выставочных размеров в килобайтах. В то время как GNU du can произвел “человекочитаемые” размеры (с k, M, G, и т.д. множители), сортирование их является другим вопросом. Достаточно недавний GNU coreutils (≥7.4) может сделать это: просто замена du -k
с du -h
и sort -k1n -k2
с sort -k1h -k2
. Иначе вот является сырая нефть awk сценарием для преобразования в снабженные суффиксом (округляющие в меньшую сторону) размеры; просто передайте по каналу sort
вывод выше в него.
awk -vFS='\t' -vOFS='\t' '{
if ($1) $1 = substr($1,1,(length($1)-1)%3+1)
substr("kMGTPEZY",(length($1)-1)/3+1,1);
print}'
du
звонить.
– Gilles 'SO- stop being evil'
07.04.2011, 22:59
Я использую следующий псевдоним для него: alias ds='du -x --all --max-depth=1 . | sort -n'
Это печатает размеры всех файлов и 1-е подкаталоги уровня текущего dir.
С текущей версией вида гну (и одалживающий @penguin359 шаблон файла)
cd /tmp; du -sShc .[^.] .??* * | sort -h
С более старой версией вида
cd /tmp
foo=$(du -sShc .[^.] .??* *)
for u in K M G T; do
echo "$foo" | egrep "^[0-9\.]+$u" | sort -n
done
Править: добавленный-S параметр к du
не включать подкаталоги.
--apparent-size
к du параметрам.
– forcefsck
07.04.2011, 21:00
ОБНОВЛЕНИЕ: я фрагментировал предыдущий сценарий. Вот новая версия, с помощью du
и awk
(предыдущий используется tree
и sed
)
Это - вывод: dusort ~/test 1
================
dir 4.10 KiB /home/user/test/bdir
dir 4.98 KiB /home/user/test/Kdir
dir 104.91 MiB /home/user/test/Mdir
dir 587.47 MiB /home/user/test/Gdir
dir 692.39 MiB /home/user/test
================
f 0 Byt /home/user/test/new file
f 42 Byt /home/user/test/.hi dd en
================
Вот сценарий
units() { awk -v pfix="$1" \
'BEGIN { yect=6 # Array element-count
split("Byt KiB MiB GiB TiB PiB",lbl)
for (i=1;i<=yect;i++) { val[i] = (2**(10*(i-1)))-1 }
}
{ yess=yect # Array element-subscript
while ( $1 < val[yess] ){ yess-- }
num = $1 / (val[yess]+1)
sub(/^[0-9]*\t*/,"")
if (yess!=1) { printf "%s %8.2f %s %s\n", pfix, num, lbl[yess], $0 }
else { printf "%s %5d %s %s\n", pfix, num, lbl[yess], $0 }
}'
}
tdir="/tmp/$USER/$(basename $0)"
[[ ! -d "$tdir" ]] && mkdir -p "$tdir"
file="$tdir/$(date +%N)"
echo "================"
dirs="$file.dirs"; du --max-depth=$2 -b $1 >"$dirs" ; <"$dirs" sort -n | units "dir"
echo "================"
filz="$file.filz"; { du --max-depth=$2 -ab $1 ; cat "$dirs" ; } | sort -n | uniq -u | units " f "
echo "================"
rm "$file."*
#
tree
делает это. если Вы хотите используемое дисковое пространство, то du
делает это... (tree
не составляет каталог), шоу дисковой утилиты
– Peter.O
07.04.2011, 15:17
man du
, то, что это может также сообщить об "очевидном размере файла".... The apparent size of a file is the number of bytes reported by
туалет-c' на регулярных файлах, или в более общем плане, ls -l --block-size=1' or
статистика - формат = s' %. Например, файл, содержащий слово zoo' with no newline would, of course, have an apparent size of 3.
– Peter.O
07.04.2011, 15:50
find /tmp -exec du {} + | sort -nr | less
показывает самые большие файлы сначала, таким образом, можно выйти, как только Вы видели достаточно.
sort -nr
если Вы хотите самые большие значения на вершине. – LawrenceC 07.04.2011, 05:55