36.2 Утилиты файловой системы
Octave включает множество утилитных функций для копирования, перемещения, переименования и удаления файлов; для создания, чтения и удаления каталогов; для получения информации о статусе файлов; и для манипулирования именами файлов и путей.
- movefile f1
- movefile f1 f2
- movefile f1 f2 f
- movefile (f1)
- movefile (f1, f2)
- movefile (f1, f2, 'f')
- [status, msg, msgid] = movefile (…)
-
Переместить исходный файл или каталог f1 в место назначения f2.
Имя f1 может содержать шаблоны подстановки, или быть массивом строк. Если f1 расширяется до нескольких имён файлов, f2 должно быть каталогом.
Если место назначения f2 не указано, то местом назначения является текущий рабочий каталог. Если f2 является именем файла, то f1 переименовывается в f2.
Когда задан флаг принудительного перезаписи
'f', все существующие файлы будут перезаписаны без запроса.При успешном выполнении status равен 1, а msg и msgid — пустые строки (""). В противном случае, status равен 0, msg содержит сообщение об ошибке, зависящее от системы, а msgid содержит уникативный идентификатор сообщения. Обратите внимание, что код состояния является точно противоположным коду команды
system.
- rename old new
- [err, msg] = rename (old, new)
-
Изменить имя файла old на new.
При успешном выполнении err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- copyfile f1 f2
- copyfile f1 f2 f
- copyfile (f1, f2)
- copyfile (f1, f2, 'f')
- [status, msg, msgid] = copyfile (…)
-
Скопировать исходный файл(ы) или каталог f1 в место назначения f2.
Имя f1 может содержать шаблоны подстановки, или быть массивом строк. Если f1 расширяется до нескольких имён файлов, f2 должно быть каталогом.
Когда задан флаг принудительного перезаписи
'f', все существующие файлы будут перезаписаны без запроса.При успешном выполнении status равен 1, а msg и msgid — пустые строки (""). В противном случае, status равен 0, msg содержит сообщение об ошибке, зависящее от системы, а msgid содержит уникальный идентификатор сообщения. Обратите внимание, что код состояния является точно противоположным коду команды
system.
- [err, msg] = unlink (file)
-
Удалить файл с именем file.
При успешном выполнении err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- link old new
- [err, msg] = link (old, new)
-
Создать новую ссылку (также известную как жёсткая ссылка) на существующий файл.
При успешном выполнении err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- symlink old new
- [err, msg] = symlink (old, new)
-
Создать символическую ссылку new, содержащую строку old.
При успешном выполнении err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- readlink symlink
- [result, err, msg] = readlink (symlink)
-
Прочитать значение символической ссылки symlink.
При успешном выполнении result содержит содержимое символической ссылки symlink, err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- mkdir dirname
- mkdir parent dirname
- mkdir (dirname)
- mkdir (parent, dirname)
- [status, msg, msgid] = mkdir (…)
-
Создать каталог с именем dirname в каталоге parent, создавая необходимые промежуточные каталоги по мере необходимости.
Если dirname — относительный путь и каталог parent не указан, используется текущий рабочий каталог.
При успешном выполнении status равен 1, а msg и msgid — пустые строки (""). В противном случае, status равен 0, msg содержит сообщение об ошибке, зависящее от системы, а msgid содержит уникальный идентификатор сообщения.
При создании каталога права будут установлены в
0777 - UMASK.
- rmdir dir
- rmdir (dir, "s")
- [status, msg, msgid] = rmdir (…)
-
Удалить каталог с именем dir.
Если в качестве второго параметра указано значение
"s", рекурсивно удалить все подкаталоги также.При успешном выполнении status равен 1, а msg и msgid — пустые строки (""). В противном случае, status равен 0, msg содержит сообщение об ошибке, зависящее от системы, а msgid содержит уникальный идентификатор сообщения.
См. также: mkdir, confirm_recursive_rmdir, pwd.
- val = confirm_recursive_rmdir ()
- old_val = confirm_recursive_rmdir (new_val)
- confirm_recursive_rmdir (new_val, "local")
-
Запрос или установка внутренней переменной, которая управляет тем, будет ли Octave запрашивать подтверждение перед рекурсивным удалением дерева каталогов.
При вызове изнутри функции с опцией
"local", переменная изменяется локально для функции и всех вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: rmdir.
- err = mkfifo (name, mode)
- [err, msg] = mkfifo (name, mode)
-
Создать специальный файл FIFO с именем name с режимом файла mode.
mode интерпретируется как восьмеричное число и подвергается обработке umask. Окончательно вычисленный режим —
mode - umask.При успешном выполнении err равен 0, а msg — пустая строка. В противном случае, err отличен от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- umask (mask)
-
Установить маску разрешений для создания файлов.
Параметр mask — целое число, интерпретируемое как восьмеричное число.
При успешном выполнении возвращает предыдущее значение маски (как целое число, интерпретируемое как восьмеричное число); в противном случае выводится сообщение об ошибке.
Маска разрешений — концепция UNIX, используемая при создании новых объектов в файловой системе, таких как файлы, каталоги или именованные FIFO. Объект, который будет создан, имеет базовые разрешения в восьмеричном числе mode, которые изменяются в соответствии с восьмеричным значением mask. Окончательные разрешения для нового объекта —
mode - mask.
- [info, err, msg] = stat (file)
- [info, err, msg] = stat (fid)
- [info, err, msg] = lstat (file)
- [info, err, msg] = lstat (fid)
-
Возвращает структуру info, содержащую следующую информацию о file или идентификаторе файла fid.
dev-
Идентификатор устройства, содержащего запись в каталоге для данного файла.
ino-
Номер файла.
mode-
Режим файла, как целое число. Используйте функции
S_ISREG,S_ISDIR,S_ISCHR,S_ISBLK,S_ISFIFO,S_ISLNK, илиS_ISSOCKдля извлечения информации из этого значения. modestr-
Режим файла, как строка из десяти букв или дефисов, как возвращается командой ls -l.
nlink-
Количество ссылок.
uid-
Идентификатор пользователя владельца файла.
gid-
Идентификатор группы владельца файла.
rdev-
Идентификатор устройства для специальных блочных или символьных файлов.
size-
Размер в байтах.
atime-
Время последнего доступа в том же формате, что и значения времени, возвращаемые функцией
time. См. Утилиты времени. mtime-
Время последнего изменения в том же формате, что и значения времени, возвращаемые функцией
time. См. Утилиты времени. ctime-
Время последнего изменения статуса файла в том же формате, что и значения времени, возвращаемые функцией
time. См. Утилиты времени. blksize-
Размер блоков в файле.
blocksКоличество блоков, выделенных для файла.
Если вызов успешен, err равно 0, а msg — пустая строка. Если файл не существует или произошла какая-либо другая ошибка, info — пустая матрица, err равно -1, а msg содержит соответствующее сообщение об ошибке системы.
Если file — символическая ссылка,
statвернёт информацию о фактическом файле, на который указывает ссылка. Используйтеlstat, если вам нужна информация о самой символической ссылке.Например:
[info, err, msg] = stat ("/vmlinuz") ⇒ info = { atime = 855399756 rdev = 0 ctime = 847219094 uid = 0 size = 389218 blksize = 4096 mtime = 847219094 gid = 6 nlink = 1 blocks = 768 mode = -rw-r--r-- modestr = -rw-r--r-- ino = 9316 dev = 2049 } ⇒ err = 0 ⇒ msg =
- S_ISBLK (mode)
-
Возвращает true, если mode соответствует блочному устройству.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISCHR (mode)
-
Возвращает true, если mode соответствует символьному устройству.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISDIR (mode)
-
Возвращает true, если mode соответствует каталогу.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISFIFO (mode)
-
Возвращает true, если mode соответствует fifo.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISLNK (mode)
-
Возвращает true, если mode соответствует символической ссылке.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISREG (mode)
-
Возвращает true, если mode соответствует обычному файлу.
Значение mode предполагается возвращённым из вызова
stat.
- S_ISSOCK (mode)
-
Возвращает true, если mode соответствует сокету.
Значение mode предполагается возвращённым из вызова
stat.
- fileattrib (file)
- fileattrib ()
- [status, msg, msgid] = fileattrib (…)
-
Возвращает информацию о file.
При успехе status равно 1, а msg — структура со следующими полями:
Name-
Полное имя файла file.
archive-
True, если file является архивным файлом (Windows).
system-
True, если file является системным файлом (Windows).
hidden-
True, если file является скрытым файлом (Windows).
directory-
True, если file является каталогом.
UserReadGroupReadOtherRead-
True, если пользователь (группа; другие пользователи) имеет права чтения для file.
UserWriteGroupWriteOtherWrite-
True, если пользователь (группа; другие пользователи) имеет права записи для file.
UserExecuteGroupExecuteOtherExecuteTrue, если пользователь (группа; другие пользователи) имеет права выполнения для file.
Если атрибут не применим (например, архив на Unix-системе), поле устанавливается в NaN.
Если
attribзавершается неудачно, msg — непустая строка, содержащая сообщение об ошибке, а msg_id — непустая строка"fileattrib".Без входных аргументов возвращает информацию о текущем каталоге.
Если file содержит символы подстановки, возвращает информацию обо всех соответствующих файлах.
См. также: glob.
- tf = isfile (f)
-
Возвращает true, если f — обычный файл, и false в противном случае.
Если f — массив ячеек строк, tf — логический массив того же размера.
См. также: isfolder, exist, stat, is_absolute_filename, is_rooted_relative_filename.
- isdir (f)
-
Данная функция не рекомендуется. Используйте
isfolderилиfile_in_loadpathвместо неё.Возвращает true, если f — каталог, и false в противном случае.
Примечание по совместимости: функция MATLAB с таким же именем также будет искать f в каталогах пути поиска. Чтобы эмулировать это поведение, используйте
tf = ! isempty (file_in_loadpath (f))
См. также: isfolder, file_in_loadpath, exist, stat, is_absolute_filename, is_rooted_relative_filename.
- isfolder (f)
- tf = isfolder (f)
-
Возвращает true, если f — каталог, и false в противном случае.
Если f — массив ячеек строк, tf — логический массив того же размера.
См. также: isfile, exist, stat, is_absolute_filename, is_rooted_relative_filename.
- files = readdir (dir)
- [files, err, msg] = readdir (dir)
-
Возвращает имена файлов в каталоге dir в виде массива ячеек строк.
При возникновении ошибки возвращает пустой массив ячеек в files. При успехе err равно 0, а msg — пустая строка. В противном случае err отлично от нуля, а msg содержит сообщение об ошибке, зависящее от системы.
- glob (pattern)
-
При заданном массиве строк-шаблонов (pattern) в виде символьного массива или массива ячеек, возвращает массив ячеек имён файлов, соответствующих любому из них, или пустой массив ячеек, если шаблоны не соответствуют ни одному имени файла.
Строки-шаблоны интерпретируются как шаблоны подстановки имён файлов (как в оболочках Unix).
Внутри шаблона
*-
соответствует любой строке, включая пустую,
?-
соответствует любому одиночному символу, и
[…]соответствует любому символу из заключённых в квадратные скобки.
Расширение тильды выполняется для каждого шаблона перед поиском соответствующих имён файлов. Например:
ls ⇒ file1 file2 file3 myfile1 myfile1b glob ("*file1") ⇒ { [1,1] = file1 [2,1] = myfile1 } glob ("myfile?") ⇒ { [1,1] = myfile1 } glob ("file[12]") ⇒ { [1,1] = file1 [2,1] = file2 }
- file_in_path (path, file)
- file_in_path (path, file, "all")
-
Возвращает абсолютное имя файла file, если он найден в path.
Значение path должно быть списком директорий, разделённых двоеточием, в формате, описанном для
path. Если файл не найден, возвращается пустая строка. Например:file_in_path (EXEC_PATH, "sh") ⇒ "/bin/sh"Если второй аргумент — ячейный массив строк, поиск осуществляется в каждой директории пути по элементам ячейного массива, и возвращается первый соответствующий элемент.
Если задан необязательный третий аргумент
"all", возвращается ячейный массив, содержащий список всех файлов с таким же именем в пути. Если файлы не найдены, возвращается пустой ячейный массив.См. также: file_in_loadpath, dir_in_loadpath, path.
- filesep ()
- filesep ("all")
-
Возвращает системный символ, используемый для разделения имён директорий.
Если
"all"задан, функция возвращает все допустимые разделители файлов в виде строки. Список разделителей зависит от системы. Это ‘/’ (слеш) под UNIX или Mac OS X, ‘/’ и ‘\’ (слеш и обратный слеш) под Windows.См. также: pathsep.
- [dir, name, ext] = fileparts (filename)
-
Возвращает директорию, имя и расширение файла filename.
Входной filename — строка, которая анализируется. Нет попытки проверить, существует ли указанный файл или директория.
- filename = fullfile (dir1, dir2, …, file)
- filenames = fullfile (…, files)
-
Построение полного имени файла из отдельных частей.
Объединяет любое количество компонентов пути интеллектуально. Результат — конкатенация каждого компонента с ровно одним разделителем файлов между каждой ненулевой частью и не более чем одним ведущим и/или конечным разделителем файлов.
Если последняя часть компонента — ячейный массив, возвращается ячейный массив путей файлов, по одному для каждого элемента в последнем компоненте, например:
fullfile ("/home/username", "data", {"f1.csv", "f2.csv", "f3.csv"}) ⇒ { [1,1] = /home/username/data/f1.csv [1,2] = /home/username/data/f2.csv [1,3] = /home/username/data/f3.csv }В системах Windows, хотя разделители файлов в виде слэша работают, они заменяются на обратный слеш; кроме того, буквы диска лишаются ведущих разделителей файлов, чтобы получить допустимый путь к файлу.
Примечание:
fullfileне выполняет никакой валидации полученного полного имени файла.
- tilde_expand (string)
- tilde_expand (cellstr)
-
Выполняет расширение тильды для string.
Если string начинается с символа тильды (‘~’), все символы перед первым слэшем (или все символы, если слэша нет) обрабатываются как возможное имя пользователя, и тильда с последующими символами до слэша заменяется домашним каталогом указанного пользователя. Если тильде сразу следует слэш, тильда заменяется домашним каталогом пользователя, запускающего Octave.
Если входные данные — ячейный массив строк cellstr, расширение тильды выполняется для каждого элемента массива.
Примеры:
tilde_expand ("~joeuser/bin") ⇒ "/home/joeuser/bin" tilde_expand ("~/bin") ⇒ "/home/jwe/bin"
- [cname, status, msg] = canonicalize_file_name (fname)
-
Возвращает каноническое имя файла fname.
Если файл не существует, возвращается пустая строка ("").
См. также: make_absolute_filename, is_absolute_filename, is_rooted_relative_filename.
- make_absolute_filename (file)
-
Возвращает полное имя файла file, начиная с корня файловой системы.
Проверка существования file не выполняется.
См. также: canonicalize_file_name, is_absolute_filename, is_rooted_relative_filename, isfolder.
- is_absolute_filename (file)
-
Возвращает true, если file — абсолютное имя файла.
См. также: is_rooted_relative_filename, make_absolute_filename, isfolder.
- is_rooted_relative_filename (file)
-
Возвращает true, если file — имя файла с корневым относительным путём.
См. также: is_absolute_filename, make_absolute_filename, isfolder.
- val = recycle ()
- old_val = recycle (new_val)
-
Запрос или установка предпочтений для повторного использования удалённых файлов.
При включённом повторном использовании команды, которые обычно удаляли бы файлы навсегда, вместо этого перемещают их во временное местоположение (например, в папку Корзина).
Примечание для программистов: Эта функция предоставляется для совместимости с MATLAB, но повторное использование не реализовано в Octave. Чтобы избежать случайной потери данных, будет выведено сообщение об ошибке, если будет сделана попытка включить повторное использование файлов.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Filesystem-Utilities.html