1) вы не изменили имя хоста. Если вы действительно хотите изменить имя хоста, вам нужно вызвать:
uname -S newname
или
hostname newname
в зависимости от используемой вами ОС.
2) Неясно, перечитывает ли bash имя хоста с помощью \ h
. Если вы хотите всегда видеть текущее имя хоста, позвоните:
PS1="`hostname`'
Единственная сортировка, которую может выполнить любой из find
s AFAIK, заключается в том, чтобы содержимое отображалось перед содержащим каталог (опцией -depth
). Вам придется использовать что-то еще для сортировки по размеру.
Если у вас есть GNU find, попробуйте:
find. -type f -iname "*.$extension" -printf "%s %p\n" | sort -n | sed 's/^[0-9]* //'
-printf "%s %p\n"
печатает размер и путь к файлу, затем мы сортируем по числам, а затем удаляем размер с помощью sed
.
С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
find
включает опцию -printf
, которая позволяет вам форматировать то, что выводить о ваших результатах, и как их выводить. Одна из возможностей, перечисленных в документации для этой опции (, см. страницу man
), это %s
для размера файла в байтах. Таким образом, вы можете добавить к вашей команде поиска что-то вроде `-printf "%s %p\n".
я использую
find. -type f -iname "*.$extension" -print0 | xargs -0 ls -lS
у меня это работает нормально