36.2 Filesystem Utilities

Last-modified: 2025-03-09 (日) 11:29:21

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'が指定されると、プロンプトなしで既存のファイルがすべて上書きされます。

成功した場合、ステータスは論理 1 になり、msg、msgidは空の文字列 ("") になります。それ以外の場合、ステータスは論理 0 になり、 msgにはシステム依存のエラー メッセージが含まれ、msgid に は一意のメッセージ識別子が含まれます。ステータス コードはコマンドのステータス コードと正反対であることに注意してくださいsystem。

See also: rename, copyfile, unlink, delete, glob.

: rename old new
: [status, msg] = rename (old, new)
ファイルの名前をoldからnewに変更します。

成功した場合、ステータスは 0 で、msgは空の文字列になります。それ以外の場合、ステータスは -1 で、msgにはシステム依存のエラー メッセージが含まれます。

See also: 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'が指定されると、プロンプトなしで既存のファイルがすべて上書きされます。

成功した場合、ステータスは論理 1 になり、msg、msgidは空の文字列 ("") になります。それ以外の場合、ステータスは論理 0 になり、 msgにはシステム依存のエラー メッセージが含まれ、msgid に は一意のメッセージ識別子が含まれます。ステータス コードはコマンドのステータス コードと正反対であることに注意してくださいsystem。

See also: movefile, rename, unlink, delete, glob.

: unlink (file)
: [status, msg] = unlink (file)
file という名前のファイルを削除します。

成功した場合、ステータスは 0 で、msgは空の文字列になります。それ以外の場合、ステータスは -1 で、msgにはシステム依存のエラー メッセージが含まれます。

See also: delete, rmdir.

: link old new
: [status, msg] = link (old, new)
既存のファイルへの新しいリンク (ハード リンクとも呼ばれます) を作成します。

成功した場合、ステータスは 0 で、msgは空の文字列になります。それ以外の場合、ステータスは -1 で、msgにはシステム依存のエラー メッセージが含まれます。

See also: symlink, unlink, readlink, lstat.

: symlink old new
: [status, msg] = symlink (old, new)
文字列oldを含むシンボリック リンクnewを作成します。

成功した場合、ステータスは 0 で、msgは空の文字列になります。それ以外の場合、ステータスは -1 で、msgにはシステム依存のエラー メッセージが含まれます。

See also: link, unlink, readlink, lstat.

: result = readlink symlink
: [result, err, msg] = readlink (symlink)
シンボリックリンクsymlinkの値を読み取ります。

成功した場合、resultにはシンボリック リンクsymlinkの内容が含まれ 、errは 0、msg は空の文字列になります。それ以外の場合、err は0 以外になり、msg にはシステム依存のエラー メッセージが含まれます。

See also: lstat, symlink, link, unlink, delete.

: mkdir dirname
: mkdir parent dirname
: mkdir (dirname)
: mkdir (parent, dirname)
: [status, msg, msgid] = mkdir (…)
ディレクトリparent内にdirnameという名前のディレクトリを作成し、必要に応じて中間ディレクトリを作成します。

dirname が相対パスであり、親ディレクトリが指定されていない場合は、現在の作業ディレクトリが使用されます。

成功した場合、ステータスは論理 1 になり、msg、msgidは空の文字列 ("") になります。それ以外の場合、ステータスは論理 0 になり、 msgにはシステム依存のエラー メッセージが含まれ、msgid に は一意のメッセージ識別子が含まれます。ステータス コードはコマンドのステータス コードと正反対であることに注意してくださいsystem。

ディレクトリを作成すると、権限が に設定されます 0777 - UMASK。

See also: rmdir, pwd, cd, umask.

: rmdir dir
: rmdir (dir, "s")
: [status, msg, msgid] = rmdir (…)
dirという名前のディレクトリを削除します。

オプションの 2 番目のパラメータに value が指定されている場合は"s"、すべてのサブディレクトリも再帰的に削除します。

成功した場合、ステータスは論理 1 になり、msg、msgidは空の文字列 ("") になります。それ以外の場合、ステータスは論理 0 になり、msg にはシステム依存のエラー メッセージが含まれ、msgidには一意のメッセージ識別子が含まれます。

See also: 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"、関数とそれが呼び出すサブルーチンに対して変数がローカルに変更されます。関数を終了すると、元の変数値が復元されます。

See also: rmdir.

: mkfifo (name, mode)
: [status, msg] = mkfifo (name, mode)
ファイルモードmodeでnameという名前の FIFO 特殊ファイルを作成します。

modeは 8 進数として解釈され、umask 処理の対象となります。最終的に計算された mode は です。 mode - umask

成功した場合、ステータスは 0 で、msgは空の文字列になります。それ以外の場合、ステータスは -1 で、msgにはシステム依存のエラー メッセージが含まれます。

See also: pipe, umask.

: oldmask = umask (mask)
ファイル作成の権限マスクを設定します。

パラメータマスクは整数であり、8 進数として解釈されます。

成功した場合は、マスクの前の値(8 進数として解釈される整数)を返します。それ以外の場合は、エラー メッセージが出力されます。

パーミッション マスクは、ファイル、ディレクトリ、名前付き FIFO などのファイル システム上に新しいオブジェクトを作成するときに使用される UNIX の概念です。作成されるオブジェクトには、マスクの 8 進数値に従って変更される8 進数モードの基本パーミッションがあります。新しいオブジェクトの最終的なパーミッションは です。 mode - mask

See also: fopen, mkdir, mkfifo.

: [info, err, msg] = stat (file)
: [info, err, msg] = stat (fid)
: [info, err, msg] = lstat (file)
: [info, err, msg] = lstat (fid)
ファイルまたはファイル識別子fidに関する次の情報を含む 構造体infoを返します。

dev
このファイルのディレクトリ エントリを含むデバイスの ID。

ino
ファイルのファイル番号。

mode
ファイル モード (整数)。この値から情報を抽出するには、関数、、、、、、 または を S_ISREG使用 S_ISDIRします。S_ISCHRS_ISBLKS_ISFIFOS_ISLNKS_ISSOCK

modestr
ファイル モード。 によって返される 10 個の文字またはダッシュの文字列として表されます 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には対応するシステム エラー メッセージが含まれます。

ファイルがシンボリック リンクの場合、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 =

See also: lstat, ls, dir, isfile, isfolder.

: tf = S_ISBLK (mode)
モードがブロックデバイスに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISCHR (mode)
モードが文字デバイスに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISDIR (mode)
モードがディレクトリに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISFIFO (mode)
モードがFIFO に対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISLNK (mode)
モードがシンボリック リンクに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISREG (mode)
モードが通常のファイルに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

参照: stat、lstat。

: tf = S_ISSOCK (mode)
モードがソケットに対応する 場合は true を返します。

modeの値はの呼び出しから返されるものと想定されます stat。

See also: stat, lstat.

: fileattrib
: fileattrib file
: fileattrib (file)
: [status, attrib] = fileattrib (…)
: [status, msg, msgid] = fileattrib (…)
ファイルに関する属性情報を報告します。

ファイルまたはディレクトリが指定されていない場合は、現在の作業ディレクトリに関する情報を報告します。

成功した場合、出力は次のフィールドを持つ構造体になります。

Name
ファイルの完全な名前。

archive
ファイルがアーカイブの 場合は True になります(Windows)。

system
ファイルがシステム ファイル (Windows) の 場合は True になります。

hidden
ファイルが隠しファイルの 場合は True になります(Windows)。

directory
ファイルがディレクトリの 場合は True です。

UserRead
GroupRead
OtherRead
ユーザー (グループ、他のユーザー) がファイルに対する読み取り権限を持っている場合は True です。

UserWrite
GroupWrite
OtherWrite
ユーザー (グループ、他のユーザー) がファイルに対する書き込み権限を持っている場合は True です。

UserExecute
GroupExecute
OtherExecute
ユーザー (グループ、他のユーザー) にファイルに対する実行権限がある場合は True になります。

属性が適用されない場合 (例: Unix システム上のアーカイブ)、フィールドは NaN に設定されます。

ファイルにグロブ文字が含まれている場合、一致するすべてのファイルに関する情報が構造体配列で返されます。

出力が要求された場合、最初の出力はstatusで、操作が成功した場合は値 1 が、そうでない場合は 0 になります。操作が成功した場合、 2 番目の出力には上記の構造体 ( attrib ) が含まれます。それ以外の場合、2 番目の出力はシステム依存のエラー メッセージ ( msg ) になります。操作が成功した場合は 3 番目の出力は空の文字列 ("") になり、失敗した場合は 一意のメッセージ識別子 ( msgid ) になります。

参照: stat、glob。

: 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、existing、stat、is_absolute_filename、is_rooted_relative_filename。

tf = ! isempty (file_in_loadpath (f))
See also: isfolder, file_in_loadpath, exist, stat, is_absolute_filename, is_rooted_relative_filename.

: tf = isfolder (f)
:ディレクトリを読み込む[files, err, msg] = (dir)
ディレクトリdir内のファイル名を文字列のセル配列として返します。

エラーが発生した場合は、filesに空のセル配列を返します。成功した場合、errは 0 で、msgは空の文字列です。それ以外の場合、errはゼロ以外で、msgにはシステム依存のエラー メッセージが含まれます。

参照: ls、dir、glob、what。

: cstr = glob (pattern)
patternにパターン文字列の配列 (char 配列またはセル配列) が指定されている場合 は、それらのいずれかに一致するファイル名のセル配列を返します。一致するパターンがない場合は空のセル配列を返します。

パターン文字列は、ファイル名のグロブ パターンとして解釈されます (Unix シェルで使用されるものと同様)。

パターン内

ヌル文字列を含む任意の文字列に一致します。

?
任意の1文字に一致し、

[…]
囲まれた文字のいずれかに一致します。

一致するファイル名を検索する前に、各パターンに対してチルダ展開が実行されます。例:

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
    }パターンはサポートされません。

See also: ls, dir, readdir, what.

: fname = file_in_path (path, file)
: fname = file_in_path (path, file, "all")
パス内にファイルが見つかった場合は、その絶対名を返します。

pathの値は、で説明した形式でコロンで区切られたディレクトリのリストである必要がありますpath。ファイルが見つからない場合は、空の文字列を返します。例:

file_in_path (EXEC_PATH, "sh")
   ⇒ "/bin/sh"

2 番目の引数が文字列のセル配列の場合、パスの各ディレクトリでセル配列の要素を検索し、一致する最初の要素を返します。

3 番目のオプション引数"all"が指定されている場合は、パス内で同じ名前を持つすべてのファイルのリストを含むセル配列を返します。ファイルが見つからない場合は、空のセル配列を返します。

See also: file_in_loadpath, dir_in_loadpath, path.

: sep = filesep ()
: filesep ("all")
ディレクトリ名を区切るために使用されるシステム依存の文字を返します。

が指定された場合"all"、関数は有効なファイル区切り文字をすべて文字列の形式で返します。ファイル区切り文字のリストはシステムに依存します。/'(スラッシュ)UNIXまたはMac OS Xでは'/' そして '\Windows では ' (スラッシュとバックスラッシュ) を使用します。

See also: pathsep.

: [dir, name, ext] = fileparts (filename)
ファイル名のディレクトリ、名前、拡張子のコンポーネントを返します。

入力ファイル名は解析される文字列です。指定されたファイル名またはディレクトリが実際に存在するかどうかはチェックされません。

See also: fullfile, filesep.

: filename = fullfile (dir1, dir2, …, file)
個別の部分から完全なファイル名を構築します。

この関数は、任意の数のパス コンポーネントをインテリジェントに結合します。戻り値は、パスの各部分の間に 1 つのファイル区切り文字が正確に含まれ、先頭および/または末尾に最大 1 つのファイル区切り文字が含まれる各コンポーネントの連結です。

入力引数は文字列またはセル文字列です。セル文字列である入力引数には、1 つの文字列が含まれているか、サイズが同じである必要があります。その場合、関数は入力セル文字列と同じサイズのファイルパスのセル文字列を返します。例:

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結果の完全なファイル名の検証は実行されません。

See also: fileparts, filesep.

: newstr = tilde_expand (string)
: newcstr = tilde_expand (cellstr)
文字列に対してチルダ展開を実行します。

文字列がチルダ文字で始まる場合、('~') の場合、最初のスラッシュより前のすべての文字 (スラッシュがない場合はすべての文字) がユーザー名の候補として扱われ、チルダとスラッシュまでの文字は指定されたユーザーのホーム ディレクトリに置き換えられます。チルダの直後にスラッシュが続く場合、チルダは Octave を実行しているユーザーのホーム ディレクトリに置き換えられます。

入力が文字列のセル配列cellstrの場合、各文字列要素に対してチルダ展開が実行されます。

例:

tilde_expand ("~joeuser/bin")
    ⇒「/home/joeuser/bin」
tilde_expand ("~/bin")
    ⇒「/home/jwe/bin」

: [cname, status, msg] = canonicalize_file_name (fname)
ファイルfnameの正規名を返します。

ファイルが存在しない場合は、空の文字列 ("") が返されます。fname のチルダ展開は実行されません。

See also: make_absolute_filename, is_absolute_filename, is_rooted_relative_filename, is_same_file, tilde_expand.

: abs_fname = make_absolute_filename (file)
ファイル システムのルートから始まる ファイルの完全な名前を返します。

ファイルの存在はチェックされません。ファイルのチルダ展開は 実行されません。

See also: canonicalize_file_name, is_absolute_filename, is_rooted_relative_filename, isfolder, tilde_expand.

: tf = is_absolute_filename (file)
ファイルが絶対ファイル名の 場合は true を返します。

See also: is_rooted_relative_filename, make_absolute_filename, isfolder.

: same = is_same_file (filepath1, filepath2)
filepath1とfilepath2 が同じファイルを参照している 場合は true を返します。

filepath1またはfilepath2 のいずれかが文字列のセル配列である場合、セル配列の各メンバーに対して上記の値を含む同じサイズの配列が返されます。他の引数も、文字列のセル配列 (同じサイズ) または文字列にすることができます。

プログラミングノート: オペレーティングシステムとファイルシステムによっては、同じファイルまたはフォルダが異なるパスで参照される場合があります。特に、Windows プラットフォーム上のパスは、(ファイル1対ファイル1)、ファイルセパレータ('\' 対 '/')、およびフォーマット(A~スペース.txt(8.3 規則) vs.スペースを含むファイル名.txtこの関数は、 filepath1とfilepath2のパスが実際に同じファイルまたはフォルダーを参照している場合は true を返し、それ以外の場合は false を返します。

とは異なりstrcmp、この関数がtrue を返すには、 filepath1 とfilepath2が存在し、同じ場所を指している必要があることに注意してください。

参照: canonicalize_file_name、strcmp。

: tf = is_rooted_relative_filename (file)
ファイルがルート相対ファイル名の 場合は true を返します。

See also: is_absolute_filename, make_absolute_filename, isfolder.

: val = recycle ()
: old_val = recycle (new_val)
削除されたファイルをリサイクルするための設定を照会または設定します。

リサイクルが有効になっている場合、ファイルを完全に消去するコマンドは、代わりに一時的な場所 (「ゴミ箱」というラベルの付いたディレクトリなど) に移動します。

プログラミング ノート: この関数はMATLAB との互換性のために提供されていますが、リサイクルは Octave では実装されていません。偶発的なデータ損失を回避するために、ファイルのリサイクルを有効にしようとするとエラーが発生します。

See also: delete, rmdir.