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 содержит сообщение об ошибке, зависящее от системы.
- : symlink old new ¶
- : [status, msg] = symlink (old, new) ¶
-
Создать символическую ссылку new, содержащую строку old.
Если операция выполнена успешно, status равен 0, а msg — пустая строка. В противном случае status равен -1, а msg содержит сообщение об ошибке, зависящее от системы.
- : result = 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) ¶
- : 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вернет информацию о фактическом файле, на который указывает ссылка. Используйте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_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.
- : tf = S_ISSOCK (mode) ¶
-
Возвращает true, если mode соответствует сокету.
Значение mode предполагается полученным из вызова
stat.
- : fileattrib ¶
- : fileattrib file ¶
- : 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.
- : tf = 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 отлично от 0, а 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/v8.1.0/Filesystem-Utilities.html