File size linux stat

How to check the file size in Linux/Unix bash shell scripting

How to check file size in unix using wc command

The wc command shows the number of lines, words, and bytes contained in file. The syntax is as follows to get the file size:
wc -c /path/to/file
wc -c /etc/passwd
Sample outputs:

You can easily extract the first field either using the cut or awk command:
wc -c /etc/passwd | awk ‘
Sample outputs:

OR assign this size to a bash variable:

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Get the size of a file in a bash script using stat command

The stat command shows information about the file. The syntax is as follows to get the file size on GNU/Linux stat:
stat -c %s «/etc/passwd»
OR
stat —format=%s «/etc/passwd»
To assign this size to a bash variable:

The syntax is as follows to get the file size on BSD/MacOS stat:
stat -f %z «/etc/passwd»
Please note that if the file is symlink you will get size of that link only with the stat command.

Источник

HowTo: Linux / Unix See File Size Command

a] ls command – list directory contents.

Tutorial details
Difficulty level Easy
Root privileges No
Requirements ls/du/stat
Est. reading time Less than a one minute

b] du command – estimate file space usage.

c] stat command – display file or file system status.

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Examples

To determine the size of a file called /bin/grep, enter:

In the above output example, the 175488 is the size of the file. For a more user friendly output, pass the -h option to the ls command:

Here is what we see:

In the above output example, the 172K is the size of the file. The du command provides the same output in a more user friendly way and it hides all other details too:
du -h /bin/grep
Now du command reporting file size on screen:

Finally, stat command also provide file size:
stat /bin/grep
Linux stat command outputs:

The following commands are executed on Apple OS X Unix operating systems to file out the file size of the /usr/bin/vim binary file:
$ ls -l /usr/bin/vim
$ ls -lh /usr/bin/vim
$ stat -x /usr/bin/vim

Fig.01: Finding out file size using various command line options on OS X Unix OS

Summing up

You learned different Linux and Unix commands to display file size using the command-line option. You need to type these commands using the terminal application. One can execute them over remote ssh session too, using the ssh command:

Finding file size using ssh command over the remote session (cloud server)

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

Команда Stat в Linux

Stat Command in Linux

Эта статья объясняет, как использовать stat команду.

stat утилита командной строки, которая отображает подробную информацию о данных файлах или файловых системах

Использование stat команды

Синтаксис stat команды следующий:

Давайте посмотрим на следующий пример:

Вывод будет выглядеть примерно так:

При вызове без каких-либо параметров stat отображается следующая информация о файле:

  • File — имя файла.
  • Size — Размер файла в байтах.
  • Blocks — количество выделенных блоков, которые занимает файл.
  • IO Block — размер в байтах каждого блока.
  • File type — (например, обычный файл, каталог, символическая ссылка . )
  • Device — номер устройства в шестнадцатеричном и десятичном виде.
  • Inode — номер Inode.
  • Links — Количество жестких ссылок.
  • Access — Права доступа к файлам в числовых и символьных методах.
  • Uid — идентификатор пользователя и имя владельца .
  • Gid — идентификатор группы и имя владельца.
  • Context — контекст безопасности SELinux.
  • Access — последний раз, когда к файлу обращались.
  • Modify — последний раз, когда содержимое файла было изменено.
  • Change — последний раз, когда атрибут файла или содержимое были изменены.
  • Birth — Время создания файла (не поддерживается в Linux).

Отображение информации о файловой системе

Чтобы получить информацию о файловой системе, в которой находится данный файл, вместо информации о самом файле, используйте параметр -f , ( —file-system ):

Вывод команды будет выглядеть так:

Когда stat вызывается с -f параметром, он показывает следующую информацию:

  • File — имя файла.
  • ID — ID файловой системы в шестнадцатеричном формате.
  • Namelen — максимальная длина имен файлов.
  • Fundamental block size — размер каждого блока в файловой системе.
  • Blocks:
    • Total — общее количество блоков в файловой системе.
    • Free — количество свободных блоков в файловой системе.
    • Available — количество бесплатных блоков, доступных для пользователей без полномочий root.
  • Inodes:
    • Total — общее количество inode в файловой системе.
    • Free — количество бесплатных инодов в файловой системе.

Разыменование (Follow) Симлинки

По умолчанию stat не следует символическим ссылкам . Если вы запустите команду по символической ссылке, вывод будет содержать информацию о символической ссылке, а не о файле, на который она указывает:

Для разыменования (следования) символической ссылки и отображения информации о файле, на который указывает символическая ссылка, используйте параметр -L , ( —dereference ):

Настройка вывода

Команда stat имеет две опции, которые позволяют вам настроить вывод в соответствии с вашими потребностями:, -c ( —format=»format» ) и —printf=»format» .

Разница между этими двумя опциями заключается в том, что когда два или более файлов используются в качестве оперантов, —format автоматически добавляется новая строка после вывода каждого операнда. В —printf трактует обратный слеш.

Существует множество директив формата для файлов и файловых систем, которые можно использовать с —format и —printf .

Например, чтобы просмотреть только тип файла, который вы будете использовать:

Вы можете комбинировать любое количество директив форматирования и, при необходимости, использовать пользовательские разделители между ними. Разделитель может быть одним символом или строкой:

Чтобы интерпретировать специальные символы, такие как перевод строки или табуляция, используйте —printf параметр:

\n печатает новую строку:

stat Также может отображать информацию в сжатой форме. Этот формат полезен для анализа другими утилитами.

Вызовите команду с опцией -t ( —terse ), чтобы напечатать вывод в краткой форме:

Для получения полного списка всех директив формата для файлов и файловых систем введите man stat или stat —help в вашем терминале.

Вывод

Команда stat печатает информацию о заданных файлах и файловых системах.

В Linux есть несколько других команд, которые могут отображать информацию о заданных файлах, ls причем наиболее часто используемую, но она показывает только часть информации, предоставленной stat командой.

Источник

stat(2) — Linux man page

stat, fstat, lstat — get file status

Synopsis

int stat(const char *path, struct stat *buf);
int fstat(int
fd, struct stat *buf);
int lstat(const char *
path, struct stat *buf);

Feature Test Macro Requirements for glibc (see feature_test_macros(7)): lstat(): _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L

Description

These functions return information about a file. No permissions are required on the file itself, but-in the case of stat() and lstat() — execute (search) permission is required on all of the directories in path that lead to the file.

stat() stats the file pointed to by path and fills in buf.

lstat() is identical to stat(), except that if path is a symbolic link, then the link itself is stat-ed, not the file that it refers to.

fstat() is identical to stat(), except that the file to be stat-ed is specified by the file descriptor fd.

All of these system calls return a stat structure, which contains the following fields: The st_dev field describes the device on which this file resides. (The major(3) and minor(3) macros may be useful to decompose the device ID in this field.)

The st_rdev field describes the device that this file (inode) represents.

The st_size field gives the size of the file (if it is a regular file or a symbolic link) in bytes. The size of a symbolic link is the length of the pathname it contains, without a terminating null byte.

The st_blocks field indicates the number of blocks allocated to the file, 512-byte units. (This may be smaller than st_size/512 when the file has holes.)

The st_blksize field gives the «preferred» blocksize for efficient file system I/O. (Writing to a file in smaller chunks may cause an inefficient read-modify-rewrite.)

Not all of the Linux file systems implement all of the time fields. Some file system types allow mounting in such a way that file and/or directory accesses do not cause an update of the st_atime field. (See noatime, nodiratime, and relatime in mount(8), and related information in mount(2).) In addition, st_atime is not updated if a file is opened with the O_NOATIME; see open(2).

The field st_atime is changed by file accesses, for example, by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes). Other routines, like mmap(2), may or may not update st_atime.

The field st_mtime is changed by file modifications, for example, by mknod(2), truncate(2), utime(2) and write(2) (of more than zero bytes). Moreover, st_mtime of a directory is changed by the creation or deletion of files in that directory. The st_mtime field is not changed for changes in owner, group, hard link count, or mode.

The field st_ctime is changed by writing or by setting inode information (i.e., owner, group, link count, mode, etc.).

The following POSIX macros are defined to check the file type using the st_mode field: S_ISREG(m)

is it a regular file?

FIFO (named pipe)?

symbolic link? (Not in POSIX.1-1996.)

socket? (Not in POSIX.1-1996.) The following flags are defined for the st_mode field: The set-group-ID bit (S_ISGID) has several special uses. For a directory it indicates that BSD semantics is to be used for that directory: files created there inherit their group ID from the directory, not from the effective group ID of the creating process, and directories created there will also get the S_ISGID bit set. For a file that does not have the group execution bit (S_IXGRP) set, the set-group-ID bit indicates mandatory file/record locking.

The sticky bit (S_ISVTX) on a directory means that a file in that directory can be renamed or deleted only by the owner of the file, by the owner of the directory, and by a privileged process.

Return Value

On success, zero is returned. On error, -1 is returned, and errno is set appropriately.

Errors

Search permission is denied for one of the directories in the path prefix of path. (See also path_resolution(7).)

Too many symbolic links encountered while traversing the path. ENAMETOOLONG path is too long. ENOENT

A component of path does not exist, or path is an empty string.

Out of memory (i.e., kernel memory). ENOTDIR A component of the path prefix of path is not a directory. EOVERFLOW path or fd refers to a file whose size, inode number, or number of blocks cannot be represented in, respectively, the types off_t, ino_t, or blkcnt_t. This error can occur when, for example, an application compiled on a 32-bit platform without -D_FILE_OFFSET_BITS=64 calls stat() on a file whose size exceeds (1

Conforming To

These system calls conform to SVr4, 4.3BSD, POSIX.1-2001.

According to POSIX.1-2001, lstat() on a symbolic link need return valid information only in the st_size field and the file-type component of the st_mode field of the stat structure. POSIX.-2008 tightens the specification, requiring lstat() to return valid information in all fields except the permission bits in st_mode.

Use of the st_blocks and st_blksize fields may be less portable. (They were introduced in BSD. The interpretation differs between systems, and possibly on a single system when NFS mounts are involved.) If you need to obtain the definition of the blkcnt_t or blksize_t types from , then define _XOPEN_SOURCE with the value 500 or greater (before including any header files).

POSIX.1-1990 did not describe the S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR, S_IFIFO, S_ISVTX constants, but instead demanded the use of the macros S_ISDIR(), etc. The S_IF* constants are present in POSIX.1-2001 and later.

The S_ISLNK() and S_ISSOCK() macros are not in POSIX.1-1996, but both are present in POSIX.1-2001; the former is from SVID 4, the latter from SUSv2.

UNIX V7 (and later systems) had S_IREAD, S_IWRITE, S_IEXEC, where POSIX prescribes the synonyms S_IRUSR, S_IWUSR, S_IXUSR.

Other systems Values that have been (or are) in use on various systems: A sticky command appeared in Version 32V AT&T UNIX.

Notes

Since kernel 2.5.48, the stat structure supports nanosecond resolution for the three file timestamp fields. Glibc exposes the nanosecond component of each field using names of the form st_atim.tv_nsec if the _BSD_SOURCE or _SVID_SOURCE feature test macro is defined. These fields are specified in POSIX.1-2008, and, starting with version 2.12, glibc also exposes these field names if _POSIX_C_SOURCE is defined with the value 200809L or greater, or _XOPEN_SOURCE is defined with the value 700 or greater. If none of the aforementioned macros are defined, then the nanosecond values are exposed with names of the form st_atimensec. On file systems that do not support subsecond timestamps, the nanosecond fields are returned with the value 0.

On Linux, lstat() will generally not trigger automounter action, whereas stat() will (but see fstatat(2)).

For most files under the /proc directory, stat() does not return the file size in the st_size field; instead the field is returned with the value 0.

Underlying kernel interface Over time, increases in the size of the stat structure have led to three successive versions of stat(): sys_stat() (slot __NR_oldstat), sys_newstat() (slot __NR_stat), and sys_stat64() (new in kernel 2.4; slot __NR_stat64). The glibc stat() wrapper function hides these details from applications, invoking the most recent version of the system call provided by the kernel, and repacking the returned information if required for old binaries. Similar remarks apply for fstat() and lstat().

Example

The following program calls stat() and displays selected fields in the returned stat structure.

Источник

Читайте также:  Совместимый браузер для windows 10
Оцените статью