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 отлично от 0, а 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.
Если файл не существует, возвращается пустая строка (""). Расширение тильды для 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 имя файла со пробелами.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/v6.4.0/Filesystem-Utilities.html