Упорядочить все файлы по размеру с помощью find

1) вы не изменили имя хоста. Если вы действительно хотите изменить имя хоста, вам нужно вызвать:

uname -S newname

или

hostname newname

в зависимости от используемой вами ОС.

2) Неясно, перечитывает ли bash имя хоста с помощью \ h . Если вы хотите всегда видеть текущее имя хоста, позвоните:

PS1="`hostname`'
0
15.03.2018, 14:14
4 ответа

Единственная сортировка, которую может выполнить любой из finds AFAIK, заключается в том, чтобы содержимое отображалось перед содержащим каталог (опцией -depth). Вам придется использовать что-то еще для сортировки по размеру.

Если у вас есть GNU find, попробуйте:

find. -type f -iname "*.$extension" -printf "%s %p\n" | sort -n | sed 's/^[0-9]* //'

-printf "%s %p\n"печатает размер и путь к файлу, затем мы сортируем по числам, а затем удаляем размер с помощью sed.

5
28.01.2020, 02:18

Сzsh:

printf '%s\n' **/*.$extension(D.oL)

Чтобы получить вывод типа GNU ls -lh-, с помощью GNUls:

ls -Ulhd -- **/*.$extension(D.oL)

Или, если список слишком велик:

autoload zargs # best in ~/.zshrc
zargs --eof= -- **/*.$extension(D.oL) '' ls -Ulhd --

Или

printf '%s\0' **/*.$extension(D.oL) | xargs -r0 ls -Ulhd --

Если по какой-то причине вам нужно использовать find, вы всегда можете использовать:

printf '%s\0'./**/*.$extension(D.oL) | xargs -r0 sh -c '
  exec find "$@" -prune...' sh
1
28.01.2020, 02:18

findвключает опцию -printf, которая позволяет вам форматировать то, что выводить о ваших результатах, и как их выводить. Одна из возможностей, перечисленных в документации для этой опции (, см. страницу man), это %sдля размера файла в байтах. Таким образом, вы можете добавить к вашей команде поиска что-то вроде `-printf "%s %p\n".

0
28.01.2020, 02:18

я использую

   find. -type f -iname "*.$extension" -print0 | xargs -0 ls -lS

у меня это работает нормально

2
28.01.2020, 02:18

Теги

Похожие вопросы