Если я введу команду поиска следующим образом:
$ find . -name *.ear
Он распечатывает:
./dir1/dir2/earFile1.ear
./dir1/dir2/earFile2.ear
./dir1/dir3/earFile1.ear
Я хочу «напечатать» в командной строке имя и размер:
./dir1/dir2/earFile1.ear 5000 KB
./dir1/dir2/earFile2.ear 5400 KB
./dir1/dir3/earFile1.ear 5400 KB
unix
command-line
find
solaris
Брайан Харт
источник
источник
find . -name '*.ear' -exec ls -lh {} + \;
(расширение GNU) илиfind . -name '*.ear' -print0 | xargs -0 ls -lh
. Также вы можете добавить,-type f
если вас интересуют только файлы (или добавить-d
в ls, если вы хотите, чтобы сами каталоги были включены без их содержимого).-type f
подсчет только обычных файлов.find . -name "*.ear" -type f
для файлов.-type d
работает для справочников.Вам нужно использовать -exec или -printf. Printf работает так:
-exec более мощный и позволяет выполнять произвольные команды, поэтому вы можете использовать версию ls или wc для распечатки имени файла вместе с другой информацией. 'man find' покажет вам доступные аргументы printf, которые могут намного больше, чем просто размер файла.
[edit] -printf не входит в официальный стандарт POSIX, поэтому проверьте, поддерживается ли он в вашей версии. Однако большинство современных систем будут использовать GNU find или аналогичную расширенную версию, так что есть большая вероятность, что она будет реализована.
источник
column
команду.find . -name *.ear -printf "%p %k KB\n" | column -t
-printf
опция также не работает в OS X. См. Stackoverflow.com/questions/752818/… .простое решение - использовать параметр -ls в find:
Это дает вам каждую запись в обычном формате "ls -l". Или, чтобы получить конкретный результат, который вы, кажется, ищете, это:
Это даст вам имя файла, за которым следует размер в КБ.
источник
ls
варианте, он должен быть намного выше в списке ответов, чем он есть.Используя gnu find, я думаю, это то, что вам нужно. Он находит все реальные файлы, а не каталоги (-тип f), и для каждого печатает имя файла (% p), табуляцию (\ t), размер в килобайтах (% k), суффикс «KB», а затем перевод строки (\ n).
Если команда printf не форматирует вещи так, как вы хотите, вы можете использовать exec, а затем команду, которую вы хотите выполнить для каждого файла. Используйте {} в качестве имени файла и завершите команду точкой с запятой (;). В большинстве оболочек все три этих символа должны быть экранированы обратной косой чертой.
Вот простое решение, которое находит и распечатывает их с помощью "ls -lh", который покажет вам размер в удобочитаемой форме (k для килобайт, M для мегабайт):
В качестве еще одной альтернативы "wc -c" напечатает количество символов (байтов) в файле:
источник
-name '*.ear'
в примерах, это должен быть ответ №1. Он точно отвечает на вопрос, объясняет значение синтаксиса и дает несколько альтернатив.find . -type f -printf '%k KB\t %p\n'
то есть сначала распечатать размер файла, скорее всего, будет лучше с точки зрения форматирования из-за выравнивания.Это дает вам только размер файла вместо всего ненужного.
источник
wc
работает для этого лучше, если вам нужен размер в байтах.Awk может исправить вывод, чтобы дать именно то, о чем спрашивал спрашивающий. В моей системе Solaris 10 команда find -ls выводит размер в КБ во втором поле, поэтому:
В противном случае используйте -exec ls -lh и выберите поле размера из вывода. Снова в Solaris 10:
источник
Почему бы не использовать ду-а ? Например
Работает на Mac
источник
Я боролся с этим в Mac OS X, где команда find не поддерживает
-printf
.Решение, которое я нашел, которое, по общему признанию, полагается на «группу» для всех файлов, являющихся «персоналом», было ...
Это разбивает вывод ls long на три токена
Затем выводятся токены 2 и 3, т.е. вывод - это количество байтов, а затем имя файла
источник
find
доступна через homebrew сbrew install findutils
Это должно дать вам то, что вы ищете, включая форматирование (т.е. сначала имя файла, а затем размер):
пример вывода (где я раньше
-iname "*.php"
получал какой-то результат):источник
Попробуйте следующие команды:
GNU
stat
:BSD
stat
:однако
stat
не является стандартным, такdu
иwc
может быть лучшим подходом:источник
Вы можете попробовать это:
Это даст вам размер в байтах. Но команда du также принимает параметры -k для КБ и -m для МБ. Это даст вам результат вроде
источник
источник
Справочник Scripter World
источник
источник
Если вам нужно получить общий размер, вот предложение сценария
источник