Octave 包含许多实用函数,用于复制、移动、重命名和删除文件;创建、读取和删除目录;检索文件的状态信息;以及处理文件和路径名称。
f1 ¶f1 f2 ¶f1 f2 f ¶(f1) ¶(f1, f2) ¶(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 命令相反。
old new ¶[status, msg] = rename (old, new) ¶将文件 old 的名称更改为 new。
如果成功,status 为 0,msg 为空字符串。否则,status 为 -1,msg 包含一个系统相关的错误消息。
f1 f2 ¶f1 f2 f ¶(f1, f2) ¶(f1, f2, 'f') ¶[status, msg, msgid] = copyfile (…) ¶将源文件或目录 f1 复制到目标 f2。
名称 f1 可以包含通配符模式,或是一个字符串元胞数组。如果 f1 展开为多个文件名,则 f2 必须是一个目录。
当指定了强制标志 'f' 时,任何已存在的文件将被覆盖而不会提示。
如果成功,status 为逻辑值 1,且 msg 和 msgid 为空字符串 ("")。否则,status 为逻辑值 0,msg 包含一个系统相关的错误消息,msgid 包含一个唯一的消息标识符。请注意,状态码正好与 system 命令相反。
(file) ¶[status, msg] = unlink (file) ¶删除名为 file 的文件。
如果成功,status 为 0,msg 为空字符串。否则,status 为 -1,msg 包含一个系统相关的错误消息。
old new ¶[status, msg] = link (old, new) ¶创建一个指向现有文件的新链接(也称为硬链接)。
如果成功,status 为 0,msg 为空字符串。否则,status 为 -1,msg 包含一个系统相关的错误消息。
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 包含一个系统相关的错误消息。
dirname ¶parent dirname ¶(dirname) ¶(parent, dirname) ¶[status, msg, msgid] = mkdir (…) ¶在目录 parent 中创建名为 dirname 的目录,必要时会创建所有中间目录。
如果 dirname 是相对路径,且未指定 parent 目录,则使用当前工作目录。
如果成功,status 为逻辑值 1,且 msg 和 msgid 为空字符串 ("")。否则,status 为逻辑值 0,msg 包含一个系统相关的错误消息,msgid 包含一个唯一的消息标识符。请注意,状态码正好与 system 命令相反。
创建目录时,权限将设置为 0777 - UMASK。
dir ¶(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.
(name, mode) ¶[status, msg] = mkfifo (name, mode) ¶创建一个名为 name、文件模式为 mode 的 FIFO 特殊文件。
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包含此文件目录项的设备 ID。
ino文件的 inode 编号。
mode文件模式,以整数形式表示。使用函数 S_ISREG、S_ISDIR、S_ISCHR、S_ISBLK、S_ISFIFO、S_ISLNK 或 S_ISSOCK 来从该值提取信息。
modestr文件模式,以十个字母或短划线的字符串形式表示,如同 ls -l 返回的那样。
nlink链接数。
uid文件所有者的用户 ID。
gid文件所属组的组 ID。
rdev块设备或字符特殊文件的设备 ID。
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 =
file ¶(file) ¶[status, attrib] = fileattrib (…) ¶[status, msg, msgid] = fileattrib (…) ¶报告关于 file 的属性信息。
如果未指定文件或目录,则报告当前工作目录的信息。
如果成功,输出是一个包含以下字段的结构体:
Namefile 的完整名称。
archive如果 file 是存档文件,则为 true(Windows)。
system如果 file 是系统文件,则为 true(Windows)。
hidden如果 file 是隐藏文件,则为 true(Windows)。
directory如果 file 是目录,则为 true。
UserReadGroupReadOtherRead如果用户(组;其他用户)对 file 具有读取权限,则为 true。
UserWriteGroupWriteOtherWrite如果用户(组;其他用户)对 file 具有写入权限,则为 true。
UserExecuteGroupExecuteOtherExecute如果用户(组;其他用户)对 file 具有执行权限,则为 true。
如果某个属性不适用(例如,Unix 系统上的 archive),则该字段设置为 NaN。
如果 file 包含通配符,则所有匹配文件的信息以结构体数组形式返回。
如果请求输出,第一个是 status,操作成功时值为 1,否则为 0。第二个输出在操作成功时包含上述结构体(attrib);否则,第二个输出是系统相关的错误消息(msg)。第三个输出在操作成功时为空字符串(""),在失败时为唯一的消息标识符(msgid)。
tf = isfile (f) ¶如果 f 是常规文件,则返回 true,否则返回 false。
如果 f 是字符串元胞数组,则 tf 是相同大小的逻辑数组。
另请参阅: isfolder, exist, stat, is_absolute_filename, is_rooted_relative_filename.
tf = isdir (f) ¶不推荐使用此函数。请改用 isfolder 或 file_in_loadpath。
如果 f 是目录,则返回 true,否则返回 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) ¶如果 f 是目录,则返回 true,否则返回 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 包含一个系统相关的错误消息。
cstr = glob (pattern) ¶给定一个模式字符串数组(字符数组或元胞数组)pattern,返回匹配其中任何一个模式的文件名的元胞数组,如果没有匹配的模式,则返回空元胞数组。
模式字符串被解释为文件名通配模式(如同 Unix shell 中使用的那样)。
在模式中:
*匹配任何字符串,包括空字符串,
?匹配任何单个字符,
[…]匹配任何包含在括号内的字符。
在查找匹配的文件名之前,会对每个模式进行波浪号扩展。例如:
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") ¶如果在 path 中能找到 file,则返回其绝对名称。
path 的值应该是一个冒号分隔的目录列表,格式如 path 所述。如果未找到文件,返回空字符串。例如:
file_in_path (EXEC_PATH, "sh")
⇒ "/bin/sh"
如果第二个参数是字符串元胞数组,则在路径的每个目录中搜索元胞数组的每个元素,并返回第一个匹配项。
如果提供了第三个可选参数 "all",则返回一个包含路径中所有同名文件的元胞数组。如果未找到任何文件,则返回空元胞数组。
另请参阅: file_in_loadpath, dir_in_loadpath, path.
sep = 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) ¶如果 file 是绝对文件名,则返回 true。
另请参阅: make_absolute_filename, is_rooted_relative_filename, is_same_file.
tf = is_same_file (filepath1, filepath2) ¶如果 filepath1 和 filepath2 指向同一个文件或目录,则返回 true。
如果 filepath1 或 filepath2 是字符串元胞数组,则返回相同大小的数组,其中包含针对元胞数组每个成员的上述描述的值。另一个参数也可以是字符串元胞数组(相同大小)或字符串。
编程说明:根据操作系统和文件系统的不同,同一个文件或文件夹可以通过不同的路径引用。特别是在 Windows 平台上,路径可能在大小写(file1 vs. FILE1)、文件分隔符(‘\’ vs. ‘/’)和格式(A~spaces.txt(8.3 约定)vs. A filename with spaces.txt)上有所不同。如果 filepath1 和 filepath2 中的路径实际指向同一个文件或文件夹,则此函数返回 true,否则返回 false。
请注意,与 strcmp 不同,此函数要求 filepath1 和 filepath2 都存在,并且指向同一个位置,才能返回 true。
另请参阅: canonicalize_file_name, strcmp.
tf = is_rooted_relative_filename (file) ¶如果 file 是根相对文件名,则返回 true。
另请参阅: make_absolute_filename, is_absolute_filename, is_same_file.