M.S.S.E Ответов: 3

Как получить размер файла в байтах с помощью wc -C


когда я использую команду, чтобы получить размер файла в пока через туалет -с командой возвращения двух значений, размером в байт и название файла, например: выход для туалета -с my_file составляет 322 my_file мне нужно только первое значение, чтобы использовать его в случае, если условие, и мне нужно, чтобы использовать эту конкретную команду не любой другой.. Любая помощь, пожалуйста, спасибо.

Что я уже пробовал:

wc -c my_file

3 Ответов

Рейтинг:
1

phil.o

Вы можете трубить awk[^] чтобы изолировать размер:

wc -c my_file | awk '{print $1}'


k5054

Я никогда не использовал awk, за исключением тех редких случаев, когда чье-то решение проблемы, которую я пытался решить, использовало его, и я мог скопировать и/или приспособиться к своей ситуации. Тем не менее, я думал, что будет awk one-liner, который может получить размер файла. Поиск в Google не дал никаких ответов, но с небольшой помощью от нескольких различных сайтов, я пришел к этому

awk 'BEGIN {sum=0} {sum+=length($0)+1} END {print sum}'

Если бы вы собирались придерживаться решения только awk (вероятно, из чистого упрямства), есть ли что-нибудь лучше?

phil.o

Если последняя строка не является пустой строкой, вы можете быть отключены на единицу (хотя я не уверен; это нужно было бы проверить). В этом случае это может решить проблему:

awk 'BEGIN {sum=0} {sum+=length($0)} END {print sum+NR-1}'

Рейтинг:
1

k5054

Нет никакой возможности не печатать имя файла, вам нужно будет использовать трубу, как показал phil.o. Некоторые другие варианты:

#use cat
cat my_file | wc -c

#use cut
wc -c my_file | cut -f1 -d ' '

#you could also use stat, if you don't want to use a pipe
stat -c "%s" my_file


Если ваш файл UTF-8, и вам нужно получить подсчет глифов, то вы, вероятно, хотите придерживаться wc -m


Я уверен, что есть и другие способы получить этот ответ.


Рейтинг:
1

M.S.S.E

Я сделал это с помощью этого :

wc -c < my_file