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, copyfile, unlink, delete, glob.

广告
 
: rename old new
: [status, msg] = rename (old, new)

更改文件名oldnew.

如果成功,status为0并且msg是空字符串。否则,status为-1并且msg包含系统相关错误消息。

详见: movefile, copyfile, ls, dir.

广告
 
: 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命令

详见: movefile, rename, unlink, delete, glob.

广告
 

删除名为的文件file.

如果成功,status为0并且msg是空字符串。否则,status为-1并且msg包含系统相关错误消息。

详见: delete, rmdir.

广告
 

创建到现有文件的新链接(也称为硬链接)。

如果成功,status为0并且msg是空字符串。否则,status为-1并且msg包含系统相关错误消息。

详见: symlink, unlink, readlink, lstat.

广告
 

创建符号链接new其中包含字符串old.

如果成功,status为0并且msg是空字符串。否则,status为-1并且msg包含系统相关错误消息。

详见: link, unlink, readlink, lstat.

广告
 

读取符号链接的值symlink.

如果成功,result包含符号链接的内容symlink, err为0,并且msg是空字符串。否则,err为非零并且msg包含系统相关错误消息。

详见: lstat, symlink, link, unlink, delete.

广告
 
: 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, pwd, cd, 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被解释为Octave数,并接受umask处理。最终计算模式为mode - umask.

如果成功,status为0并且msg是空字符串。否则,status为-1并且msg包含系统相关错误消息。

详见: pipe, umask.

广告
 
: oldmask = umask (mask)

设置文件创建的权限掩码。

参数mask是一个整数,解释为Octave数。

如果成功,则返回掩码的上一个值(作为一个整数,以Octave表示);否则将打印错误消息。

权限掩码是在文件系统(如文件、目录或命名的FIFO)上创建新对象时使用的UNIX概念。要创建的对象具有Octave的基本权限mode根据的Octave值进行修改mask。新对象的最终权限是mode - mask.

详见: fopen, mkdir, mkfifo.

广告
 
: [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

文件的文件号。

广告
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 =

详见: lstat, ls, dir, isfile, isfolder.

广告
 
: tf = S_ISBLK (mode)

如果返回truemode对应于块设备。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISCHR (mode)

如果返回truemode对应于字符设备。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISDIR (mode)

如果返回truemode对应于一个目录。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISFIFO (mode)

如果返回truemode对应于fifo。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISLNK (mode)

如果返回truemode对应于符号链接。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISREG (mode)

如果返回truemode对应于常规文件。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: tf = S_ISSOCK (mode)

如果返回truemode对应于一个套接字。

的值mode假定是从对的调用返回的stat.

详见: stat, lstat.

广告
 
: fileattrib
: fileattrib file
: fileattrib (file)
: [status, attrib] = fileattrib (…)
: [status, msg, msgid] = fileattrib (…)

关于的报表属性信息file.

如果未指定任何文件或目录,请返回有关当前工作目录的信息。

如果成功,则输出为具有以下字段的结构体:

Name

的全名file.

广告
archive

如果为Truefile是一个存档(Windows)。

广告
system

如果为Truefile是一个系统文件(Windows)。

广告
hidden

如果为Truefile是一个隐藏文件(Windows)。

广告
directory

如果为Truefile是一个目录。

广告
UserRead
GroupRead
OtherRead

如果用户(组;其他用户)具有的读取权限,则为Truefile.

广告
UserWrite
GroupWrite
OtherWrite

如果用户(组;其他用户)具有的写入权限,则为Truefile.

广告
UserExecute
GroupExecute
OtherExecute

如果用户(组;其他用户)具有的执行权限,则为Truefile.

广告

如果某个属性不适用(例如,Unix系统上的存档),则该字段设置为NaN。

如果file包含全局字符,则在结构体数组中返回有关所有匹配文件的信息。

如果指定输出,则第一个是status操作成功时取1,否则取0。第二个输出包含上述结构体(attrib)如果手术成功;否则,第二个输出是系统相关的错误消息(msg). 当操作成功时,第三个输出是空字符串(“”),或者是唯一的消息标识符(msgid)万一发生故障。

详见: stat, glob.

广告
 
: tf = isfile (f)

如果返回truef是常规文件,否则为false。

如果f是串的元胞数组,tf是一个大小相同的逻辑数组。

详见: isfolder, exist, stat, is_absolute_filename, is_rooted_relative_filename.

广告
 
: tf = isdir (f)

不建议使用此函数。使用isfolderfile_in_loadpath相反

如果返回truef是目录,否则为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)

如果返回truef是目录,否则为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包含系统相关错误消息。

详见: ls, dir, glob, what.

广告
 
: 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字符的模式。

详见: ls, dir, readdir, what.

广告
 
: 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"返回一个cellarray,其中包含路径中具有相同名称的所有文件的列表。如果未找到任何文件,则返回一个空的元胞数组。

详见: file_in_loadpath, dir_in_loadpath, path.

广告
 
: sep = filesep ()
: filesep ("all")

返回用于分隔目录名的系统相关字符。

如果"all"如果给定,该函数以字符串的形式返回所有有效的文件分隔符。文件分隔符的列表取决于系统。它是/(正斜杠)在UNIX或Mac OS X下 , ‘/\(前斜杠和后斜杠)。

详见: pathsep.

广告
 
: [dir, name, ext] = fileparts (filename)

返回的目录、名称和扩展组件filename.

输入filename是一个经过解析的字符串。没有尝试检查指定的文件名或目录是否实际存在。

详见: fullfile, filesep.

广告
 
: 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不对生成的完整文件名执行任何验证。

详见: fileparts, filesep.

广告
 
: 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)

如果返回truefile是一个绝对的文件名。

详见: is_rooted_relative_filename, make_absolute_filename, isfolder.

广告
 
: same = is_same_file (filepath1, filepath2)

如果返回truefilepath1filepath2详见同一文件。

如果有filepath1filepath2是字符串的元胞数组,返回相同大小的一个数组,其中包含上面描述的元胞数组中每个成员的值。另一个参数也可以是字符串的cellarray(大小相同)或字符串。

编程说明:根据操作系统和文件系统的不同,同一个文件或文件夹可以用不同的路径引用。特别是,Windows平台上的路径可能因情况而异(file1vs。FILE1),文件分隔符(\/),以及格式(A~spaces.txt(8.3惯例)与。A filename with spaces.txt). 如果中的路径filepath1filepath2实际引用相同的文件或文件夹,否则为false。

请注意,与strcmp,此函数要求filepath1filepath2存在,以及指向相同的位置,以便变为真。

详见: canonicalize_file_name, strcmp.

广告
 
: tf = is_rooted_relative_filename (file)

如果返回truefile是根相对文件名。

详见: is_absolute_filename, make_absolute_filename, isfolder.

广告
 
: val = recycle ()
: old_val = recycle (new_val)

查询或设置回收已删除文件的首参数。

当启用回收时,会永久擦除文件的命令会将文件移动到临时位置(如符号为Trash的目录)。

编程说明:此函数用于MATLAB兼容性,但Octave中没有实现回收。为了避免意外的数据丢失,如果尝试启用文件回收,将引发错误。

详见: delete, rmdir.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2