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 ¶
- : [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 содержит зависящее от системы сообщение об ошибке.
- : symlink old new ¶
- : [status, msg] = symlink (old, new) ¶
-
Создать символическую ссылку new, которая содержит строку old.
В случае успеха, status равен 0, а msg — пустая строка. В противном случае, status равен -1, а 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 содержит уникальный идентификатор сообщения. Обратите внимание, что код состояния является точно противоположным коду команды
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) ¶
- : 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 содержит сообщение об ошибке, зависящее от системы.
- : 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_ISSOCK (mode) ¶
-
Возвращает true, если mode соответствует сокету.
Значение mode предполагается возвращаемым из вызова
stat.
- : fileattrib () ¶
- : fileattrib (file) ¶
- : [status, attrib] = fileattrib (…) ¶
- : [status, msg, msgid] = fileattrib (…) ¶
-
Возвращает информацию об атрибутах файла file.
Если файл или директория не указаны, возвращается информация о текущей рабочей директории.
При успешном выполнении, результат представляет собой структуру со следующими полями:
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.
Если file содержит символы подстановки, информация обо всех соответствующих файлах возвращается в массиве структур.
Если запрошены выходные данные, первый из них — status, который принимает значение 1, когда операция выполнена успешно, и 0 в противном случае. Второй выходной параметр содержит структуру, описанную выше (attrib), если операция выполнена успешно; в противном случае, второй выходной параметр содержит сообщение об ошибке, зависящее от системы (msg). Третий выходной параметр — пустая строка ("") при успешном выполнении или уникальный идентификатор сообщения (msgid) в случае ошибки.
- : 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.
- : 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 }Примечание: в Windows не поддерживаются шаблоны, содержащие символы, не являющиеся ASCII.
- : 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.
- : 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не выполняет никакой проверки полученного полного имени файла.
- : 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.
Если файл не существует, возвращается пустая строка (""). Расширение тильды для fname не выполняется.
См. также: make_absolute_filename, is_absolute_filename, is_rooted_relative_filename, is_same_file, tilde_expand.
- : make_absolute_filename (file) ¶
-
Возвратить полное имя file, начиная с корня файловой системы.
Проверка существования file не выполняется. Расширение тильды для file не выполняется.
См. также: canonicalize_file_name, is_absolute_filename, is_rooted_relative_filename, isfolder, tilde_expand.
- : 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.
- : 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/v7.2.0/Filesystem-Utilities.html