Linux получить информацию о файле

Команда file в Linux

Команда file — одна из самых полезных, поскольку позволяет узнать тип данных, которые на самом деле содержатся внутри документа. Если у вас есть какой-либо файл, взятый из ненадёжного источника, не поленитесь проверить его с помощью этой команды, прежде чем нажать кнопку Открыть. Возможно, такая предосторожность покажется лишней, но она оградит вас от «встречи» с нежелательным контентом.

В большинстве дистрибутивов Linux утилита file (работу которой и запускает одноимённая команда) входит в стандартный набор программного обеспечения.

Синтаксис и опции file

Синтаксис команды file достаточно простой. Записывать её в эмуляторе терминала или консоли следует так:

file опции название_документа

Что же касается опций, то их у этой команды несколько десятков. Мы рассмотрим лишь основные:

  • -b, —brief — запрет на демонстрацию имен и адресов файлов в выводе команды;
  • -i, —mime — определение MIME-типа документа по его заголовку;
  • —mime-type, —mime-encoding — определение конкретного элемента MIME;
  • -f, —files-from — анализ документов, адреса которых указаны в простом текстовом файле;
  • -l, —list — список паттернов и их длина;
  • -s, —special-files — предотвращение проблем, которые могут возникнуть при чтении утилитой специальных файлов;
  • -P — анализ определенной части файла, которая обозначается различными параметрами;
  • -r, —raw — отказ от вывода /ooo вместо непечатных символов;
  • -z — анализ содержимого сжатых документов.

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

Примеры использования file

Если вам нужно всего лишь посмотреть тип файла, использовать опции не обязательно. Достаточно прописать имя команды, а также название файла и путь к нему, при условии, что он находится не в корневой папке:

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

file /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff

Как видно на примере, картинки с расширениями gif и tiff в действительности оказались текстовыми документами, а архив с расширением zip — PDF документом. Кстати, команда file даёт возможность не только проверить, является ли архив архивом, но и заглянуть внутрь, чтобы узнать, что в нём содержится. Для этой цели используется опция -z:

file -z /home/main-user/losst/testarchive.zip

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

file -b /home/main-user/losst/test-file.gif /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff

Иногда нужно узнать не просто тип файла, а его MIME-тип. В таком случае на помощь приходит опция -i:

file -i -b /home/main-user/losst/fileA.sbin /home/main-user/losst/fileG.aspx /home/main-user/losst/fileH.lua

Читайте также:  Install ibm notes linux

Нередко по каким-либо причинам утилита не может найти указанный файл: например, вы ошиблись буквой в его названии или неверно указали папку, в которой он находится. Тогда вывод информации об этом файле предваряет фраза cannot open. Впрочем, есть возможность видоизменить результат, добавив в него сообщение об ошибке. Для этого используйте опцию -E.

Сравните вывод команды с опцией -E и без неё:

file -E -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif

file -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif

Еще один способ работы с утилитой file — запись названий и адресов документов в простой текстовый файл. Применяя этот способ на практике, не забывайте добавлять к команде опцию —files-from, после которой указывайте имя файла, содержащего список документов, и путь к нему.

file —files-from /home/main-user/losst/list_of_files.txt

Выводы

Команда file помогает избежать ситуаций, когда вам приходится открывать подозрительные файлы, не будучи уверенными в их содержимом. Также вы можете использовать её для проверки содержимого нескольких архивов, если есть необходимость найти потерявшийся в большом массиве файлов документ, но нет желания просматривать все архивы вручную.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Файлы в Linux

Изображение баннера

В Linux всё является файлами и tty терминалы не исключение.

crw—w—-. 1 andrei tty 136, 1 Nov 19 12:43 /dev/pts/1

Первый символ — это тип файла.

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

— : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link

Тип c означает character. То есть этот файл может принимать и показывать символы

drwxr-xr-x. 118 root root 8192 Jul 13 13:37 /etc

Видно, что тип файла d. То есть directory

Для просмотра дисков/блоков выполните

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 7G 0 part ├─centos-root 253:0 0 6.2G 0 lvm / └─centos-swap 253:1 0 820M 0 lvm [SWAP] sr0 11:0 1 57.7M 0 rom /run/media/andrei/VBox_GAs_6.1.10

brw-rw—-. 1 root disk 8, 0 Jul 13 13:37 /dev/sda brw-rw—-. 1 root disk 8, 1 Jul 13 13:37 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jul 13 13:37 /dev/sda2

Можно убедитсья, что тип файлов b. То есть block

? означает что должен быть один любой символ.

brw-rw—-. 1 root disk 8, 1 Jul 13 13:37 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jul 13 13:37 /dev/sda2

[12] означает что должен быть либо символ 1 либо символ 2

brw-rw—-. 1 root disk 8, 1 Jul 13 13:37 /dev/sda1 brw-rw—-. 1 root disk 8, 2 Jul 13 13:37 /dev/sda2

Когда вы хотите узнать версию системы вы можете выполнить

lrwxrwxrwx. 1 root root Jul 13 13:37 /etc/system-release -> centos-release

Тип файла l означает link то есть это не настоящий файл, а ссылка

ls -l /etc/system-release /etc/centos-release /etc/redhat-release

-rw-r—r—. 1 root root 37 Oct 23 17:53 /etc/centos-release lrwxrwxrwx. 1 root root Jul 13 13:37 /etc/redhat-release -> centos-release lrwxrwxrwx. 1 root root Jul 13 13:37 /etc/system-release -> centos-release

/etc/centos-release — это настоящий (regular) файл а остальные — ссылки на него.

Читайте также:  Linux ubuntu правильная установка

Если бы вы пользовались redhat то настоящим был бы redhat-release

Ещё один способ получить информацию о версии — выполнить lsb_release -d где -d означает description

Description: CentOS Linux release 7.9.2009 (Core)

Узнать расположение файла

Узнать где находится файл lsb_release можно командой which lsb_release. Чтобы сразу получить дополнительную информацию выполните

-rwxr-xr-x. 1 root root 15929 Mar 27 2015 /usr/bin/lsb_release*

Опция -F означает показать тип файлов. Поэтому нам удалось увидеть * после lsb_release. * означает, что файл исполняемый.

Чтобы узнать откуда взялся файл можно воспользоваться командой rpm с опциями q (query) и f (file)

Чтобы скопировать файл в интерактивном режиме воспользуйтесь командой cp с опцией i (interactive)

interactive означает, что если файл с таким имененм существует, вас спросят прежде чем затирать его

cp -i /etc/hosts .
cp -i /etc/hosts .

Чтобы создать директорию сразу же с поддиректорией внутри воспользуйтесь командлой mkdir с опцией p (parent)

mkdir -p sites/heiheiru
ls -l sites

total 0
drwxrwxr-x. 2 andrei andrei 6 Nov 19 13:40 heiheiru

Создать файл

Можно сделать это с помощью echo

echo «» newfile
echo -n newfile

Либо с помощью >, но этот вариант мне не нравится, так как на моей Ubuntu приходится делать CTRL + C

touch -d ’15 July 1975′ newfile
stat newfile

File: newfile Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1851125 Links: 1 Access: (0644/-rw-r—r—) Uid: (26167/avorotyn) Gid: ( 2999/sshusers) Access: 1975-07-15 00:00:00.000000000 +0200 Modify: 1975-07-15 00:00:00.000000000 +0200 Change: 2022-06-15 10:05:27.686885410 +0300 Birth: —

Создать сразу несколько файлов

Если файлов нужно немного — можно просто перечислить их через пробел

Чтобы создать одновременно несколько файлов с именами идущими по порядку выполните touch с <>

Этим способом можно создать много файлов одной короткой командой.

touch files/file
ls -l files

-rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file1 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file2 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file3 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file4 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file5

Чтобы скопировать директорию files в директорию sites со всем содержимым выполните

cp -R files sites
ls -l sites/files/

total 0 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file1 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file2 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file3 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file4 -rw-rw-r—. 1 andrei andrei 0 Jul 13 13:37 file5

Директория files была скопирована в директорию sites, то есть теперь у sites есть поддиректория files.

Если у вас установлена утилита tree вы можете наглядно изучить вложенность. Если нет — выполните сперва

sites └── files ├── file1 ├── file2 ├── file3 ├── file4 └── file5 1 directory, 5 files

Создать ссылку можно командой ln, символьную ссылку ln -s

Как очистить файл в linux

Чтобы удалить содержимое файла используйте

noclobber: Запрет перезаписи файла

С помощью noclobber можно запретить перезапись существующих файлов.

echo «ABC» > sample
cat sample

echo «DEF» > sample
cat sample

set -o noclobber
set -o | grep noclobber

Обойти запрет можно добавив | после >

Читайте также:  What is pax linux

echo «GHI» >| sample
cat sample

Отключить запрет на перезапись

Как удалить файл в linux

Информация о файле

Чтобы получить информацию о свойствах файла используйте команду stat

File: newfile Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 1851125 Links: 1 Access: (0644/-rw-r—r—) Uid: (26167/avorotyn) Gid: ( 2999/sshusers) Access: 2022-06-15 09:53:28.402613374 +0300 Modify: 2022-06-15 09:53:28.402613374 +0300 Change: 2022-06-15 09:53:28.402613374 +0300 Birth: —

Узнать количество строк в файле linux

Чтобы подсчитать сколько всего строк в файле today.log используйте

Объединение файлов

Для объединения файла one с файлом two достаточно выполнить

Объединить можно сразу несклько файлов.

Рассмотрим три файла one , two , three следующего содержания

Объединим их и проверим результат — он появится в консоли как и в случае двух файлов

Cool bookstore: Book24
Best hotels: Booking.com
Official Samsung Store: Samsung

Теперь объедими файлы в один новый файл big

cat one two three > big
vi big

Cool bookstore: Book24 Best hotels: Booking.com Official Samsung Store: Samsung

К новому файлу big мы можем дописать в конец файл one

Cool bookstore: Book24
Best hotels: Booking.com
Official Samsung Store: Samsung
Cool bookstore: Book24

echo

Те же действия можно выполнить с помощью команды echo

Создать файл определённого размера

Создадим файл 10M.txt размером в 10 Mb

truncate -s 10M /usr/share/10M.txt

Узнать кодировку файла

Предположим вы только что создали файл one.txt

Чтобы узнать его кодировку выполните

one.txt: inode/x-empty; charset=binary

Напишите, что-то в файле и снова проверьте кодировку

echo heihei.ru < one.txt
file -i one.txt

one.txt: text/plain; charset=us-ascii

Убедитесь, что команда file -i опеределила разные кодировки binary и us-ascii

У вас может быть не us-ascii а другой вариант

Добавим в файл кириллические символы

one.txt: text/plain; charset=utf-8

Смена кодировки

Предположим у вас есть файл файл.html в неправильной кодировке.

Менять кодировку файлов можно следующим способом:

iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

cat файл.html | iconv -f cp1251 -t utf-8 > новый.html

В одну сторону. Потом открываем, редактируем, закрываем.

cat новый.html | iconv -f utf-8 -t cp1251 > файл.html

Конвертировать UTF-8 файл в SHIFT-JIS файл

iconv -f UTF-8 -t SHIFT-JIS utf-8-file > shift-jis-file
file -i shift-jis-file

shift-jis-file: text/plain; charset=unknown-8bit

touch sample echo «Привет» > sample file -i sample

sample: text/plain; charset=utf-8

iconv -f UTF-8 -t Windows-1251 sample > windows-1251-file
file -i windows-1251-file

windows-1251-file: text/plain; charset=iso-8859-1

Как вариант можно использовать convmv

Если у вас возникли проблемы с кодировкой на сайте советую прочитать статью «Сайт в неверной кодировке»

Изменить владельца файла

Допустим у вас есть файл one владельцами которого являются пользователь user и группа group

-rwx——. 1 user group 21012480 Dec 1 16:49 one

Чтобы изменить владельцев на andrei и heihei выполните

-rwx——. 1 andrei heihei 21012480 Dec 1 16:49 one

Разделы про поиск и сравнение файлов теперь в отдельных статьях.

В статье /dev/urandom можно узнать о том как создать файл со случайным именем

Обрезать mp3

ffmpeg -i original.mp3 -vn -acodec copy -ss 00:00:00 -to 00:30:00 part_01.mp3

Источник

Оцените статью
Adblock
detector