36.2 Утилиты файловой системы ¶
Octave включает в себя множество служебных функций для копирования, перемещения, переименования и удаления файлов; для создания, чтения и удаления каталогов; для получения информации о состоянии файлов; и для работы с именами файлов и путей.
-
: movefile
f1¶ -
: movefile
f1 f2¶ -
: movefile
f1 f2 f¶ -
: movefile
(f1)¶ -
: movefile
(f1, f2)¶ -
: movefile
(f1, f2, 'f')¶ -
:
[status] =movefile(…)¶ -
:
[status, msg] =movefile(…)¶ -
:
[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¶ -
:
[status, msg] =rename(old, new)¶ -
Изменить имя файла old на new.
В случае успеха, status равен 0, а msg является пустой строкой. В противном случае, status равен -1, а 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.
-
: unlink
(file)¶ -
:
[status, msg] =unlink(file)¶ -
Удалить файл с именем file.
В случае успеха, status равен 0, а msg является пустой строкой. В противном случае, status равен -1, а msg содержит зависящее от системы сообщение об ошибке.
-
: link
old new¶ -
:
[status, msg] =link(old, new)¶ -
Создать новую ссылку (также известную как жёсткая ссылка) на существующий файл.
В случае успеха, status равен 0, а msg является пустой строкой. В противном случае, status равен -1, а msg содержит зависящее от системы сообщение об ошибке.
-
:
result =readlinksymlink¶ -
:
[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 содержит уникальный идентификатор сообщения. Обратите внимание, что код состояния является прямо противоположным коду команды
system.При создании директории права будут установлены на
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)¶ -
:
old_val =confirm_recursive_rmdir(new_val, "local")¶ -
Запрос или установка внутренней переменной, контролирующей, будет ли Octave запрашивать подтверждение перед рекурсивным удалением дерева директорий.
При вызове из функции с опцией
"local", переменная изменяется локально для функции и любых вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: rmdir.
-
: mkfifo
(name, mode)¶ -
:
[status, msg] =mkfifo(name, mode)¶ -
Создать специальный файл FIFO с именем name и режимом файла mode.
mode интерпретируется как восьмеричное число и подвергается обработке umask. Результирующий рассчитанный режим —
mode - umask.При успешном выполнении, status равно 0, а msg — пустая строка. В противном случае, status равно -1, а msg содержит сообщение об ошибке, зависящее от системы.
-
:
oldmask =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вернёт информацию об actual файле, на который указывает ссылка. Используйте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 =
-
:
tf =S_ISBLK(mode)¶ -
Возвращает true, если mode соответствует блочному устройству.
Значение mode предполагается возвращённым функцией
stat.
-
:
tf =S_ISCHR(mode)¶ -
Возвращает true, если mode соответствует символьному устройству.
Значение mode предполагается возвращённым функцией
stat.
-
:
tf =S_ISDIR(mode)¶ -
Возвращает true, если mode соответствует каталогу.
Значение mode предполагается возвращённым функцией
stat.
-
:
tf =S_ISFIFO(mode)¶ -
Возвращает true, если mode соответствует fifo.
Значение mode предполагается возвращённым функцией
stat.
-
:
tf =S_ISLNK(mode)¶ -
Возвращает true, если mode соответствует символической ссылке.
Значение mode предполагается возвращённым функцией
stat.
-
:
tf =S_ISREG(mode)¶ -
Возвращает true, если mode соответствует обычному файлу.
Значение mode предполагается возвращённым функцией
stat.
- : fileattrib ¶
-
: fileattrib
file¶ -
: fileattrib
(file)¶ -
:
[status, attrib] =fileattrib(…)¶ -
:
[status, msg, msgid] =fileattrib(…)¶ -
Получить информацию об атрибутах файла file.
Если файл или каталог не указаны, информация будет получена для текущей рабочей директории.
При успешном выполнении возвращается структура со следующими полями:
Name-
Полное имя файла file.
archive-
Истинно, если file является архивом (Windows).
system-
Истинно, если file является системным файлом (Windows).
hidden-
Истинно, если file является скрытым файлом (Windows).
directory-
Истинно, если file является каталогом.
UserReadGroupReadOtherRead-
Истинно, если у пользователя (группы; других пользователей) есть права на чтение для file.
UserWriteGroupWriteOtherWrite-
Истинно, если у пользователя (группы; других пользователей) есть права на запись для file.
UserExecuteGroupExecuteOtherExecuteИстинно, если у пользователя (группы; других пользователей) есть права на выполнение для file.
Если атрибут не применим (например, архив в Unix-системе), поле устанавливается в NaN.
Если file содержит символы подстановки, информация обо всех соответствующих файлах возвращается в массиве структур.
Если запрошены результаты, первый — status, который принимает значение 1 при успешном выполнении операции и 0 в противном случае. Второй результат содержит структуру, описанную выше (attrib), если операция прошла успешно; в противном случае второй результат — сообщение об ошибке, зависящее от системы (msg). Третий результат — пустая строка («») при успешном выполнении или уникальный идентификатор сообщения (msgid) в случае сбоя.
-
:
tf =isfile(f)¶ -
Возвращает истинно, если f является обычным файлом, и ложно в противном случае.
Если f — массив ячеек строк, tf — логический массив того же размера.
См. также: isfolder, exist, stat, is_absolute_filename, is_rooted_relative_filename.
-
:
tf =isdir(f)¶ -
Эта функция не рекомендуется. Используйте
isfolderилиfile_in_loadpathвместо неё.Возвращает истинно, если f является каталогом, и ложно в противном случае.
Примечание о совместимости: функция MATLAB с тем же именем также будет искать f в каталогах пути загрузки. Для эмуляции этого поведения используйте
tf = ! isempty (file_in_loadpath (f))
См. также: isfolder, file_in_loadpath, exist, stat, is_absolute_filename, is_rooted_relative_filename.
-
:
tf =isfolder(f)¶ -
Возвращает истинно, если f является каталогом, и ложно в противном случае.
Если 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 содержит сообщение об ошибке, зависящее от системы.
-
:
cstr =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 }Примечание: в Windows не поддерживаются шаблоны, содержащие символы, отличные от ASCII.
-
:
fname =file_in_path(path, file)¶ -
:
fname =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.
-
:
sep =filesep()¶ -
: filesep
("all")¶ -
Возвращает зависящий от системы символ, используемый для разделения имен каталогов.
Если
"all"задан, функция возвращает все допустимые разделители файлов в виде строки. Список разделителей файлов зависит от системы. Это ‘/’ (прямой слэш) в UNIX или Mac OS X, ‘/’ и ‘\’ (прямой и обратный слэши) в Windows.См. также: pathsep.
-
:
[dir, name, ext] =fileparts(filename)¶ -
Возвращает компоненты каталога, имени и расширения filename.
Входной filename — это строка, которая анализируется. Не предпринимается попытка проверить, существует ли указанное имя файла или каталог.
-
:
filename =fullfile(dir1, dir2, …, file)¶ -
Создает полное имя файла из отдельных частей.
Функция интеллектуально объединяет любое количество компонентов пути. Возвращаемое значение представляет собой конкатенацию каждого компонента с ровно одним разделителем файлов между каждой частью пути и не более чем одним ведущим и/или завершающим разделителем файлов.
Входными аргументами могут быть строки или строковые массивы. Любые входные аргументы, которые являются строковыми массивами, должны содержать одну строку или иметь одинаковый размер. В этом случае функция возвращает строковый массив путей к файлам того же размера, что и входные строковые массивы, например:
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не выполняет никакой проверки результирующего полного имени файла.
-
:
newstr =tilde_expand(string)¶ -
:
newcstr =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.
Если файл не существует, возвращается пустая строка (""). Расширение тильды для fname не выполняется.
См. также: make_absolute_filename, is_absolute_filename, is_rooted_relative_filename, is_same_file, tilde_expand.
-
:
abs_fname =make_absolute_filename(file)¶ -
Возвращает полное имя file, начиная с корня файловой системы.
Проверка существования file не выполняется. Расширение тильды для file не выполняется.
См. также: canonicalize_file_name, is_absolute_filename, is_rooted_relative_filename, isfolder, tilde_expand.
-
:
tf =is_absolute_filename(file)¶ -
Возвращает true, если file является абсолютным именем файла.
См. также: is_rooted_relative_filename, make_absolute_filename, isfolder.
-
:
same =is_same_file(filepath1, filepath2)¶ -
Возвращает true, если filepath1 и filepath2 указывают на один и тот же файл.
Если filepath1 или filepath2 является ячейковым массивом строк, то возвращается массив того же размера, содержащий значения, описанные выше для каждого члена ячейкового массива. Другой аргумент также может быть ячейковым массивом строк (того же размера) или строкой.
Примечания к программированию: В зависимости от операционной системы и файловой системы на один и тот же файл или папку можно ссылаться с помощью разных путей. В частности, пути в операционной системе Windows могут отличаться регистром (file1 по сравнению с FILE1), разделителем файлов (‘\’ по сравнению с ‘/’) и форматом (A~spaces.txt (конвенция 8.3) по сравнению с A filename with spaces.txt). Эта функция возвращает true, если пути в filepath1 и filepath2 действительно указывают на один и тот же файл или папку, и false в противном случае.
Обратите внимание, что в отличие от
strcmp, эта функция требует, чтобы filepath1 и filepath2 существовали, а также указывали на одно и то же местоположение, чтобы вернуть true.См. также: canonicalize_file_name, strcmp.
-
:
tf =is_rooted_relative_filename(file)¶ -
Возвращает true, если file является корневым относительным именем файла.
См. также: is_absolute_filename, make_absolute_filename, isfolder.
-
:
val =recycle()¶ -
:
old_val =recycle(new_val)¶ -
Запрашивает или устанавливает предпочтение для переработки удаленных файлов.
Когда переработка включена, команды, которые должны были бы безвозвратно стереть файлы, вместо этого перемещают их во временное местоположение (например, в папку «Корзина»).
Примечание для программистов: Эта функция предоставляется для совместимости с MATLAB, но переработка не реализована в Octave. Чтобы избежать случайной потери данных, будет вызвана ошибка, если будет предпринята попытка включить переработку файлов.
© 1996–2023 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/v9.2.0/Filesystem-Utilities.html