ファイルの種類(ファイル / ディレクトリ / シンボリックリンク)を確認するには
Java 2016/07/04
Signature:
PHP 2016/11/24
// ディレクトリかどうかを判定
if (fileperms("/home/foo/testfile") & 0x4000) {
...;
}
// または
if (is_dir("/home/foo/testfile")) {
...;
}
// 通常のファイルかどうかを判定
if (fileperms("/home/foo/testfile") & 0x8000) {
...;
}
// または
if (is_file("/home/foo/testfile")) {
...;
}
// シンボリックリンクかどうかを判定
if (fileperms("/home/foo/testfile") & 0xA000) {
...;
}
filepermsで、他にもソケットやパイプなどの判定ができるみたい。
is_file はディレクトリに対しては false になる。
is_dir と is_file は、対象が存在しない場合は false になる。
fileperms 関数 | PHP Manual
http://php.net/manual/ja/function.fileperms.php
is_dir 関数 | PHP Manual
http://php.net/manual/ja/function.is-dir.php
is_file 関数 | PHP Manual
http://php.net/manual/ja/function.is-file.php
Python 2014/10/16
import os
# ディレクトリではなく通常のファイルかどうかを判定
if os.path.isfile("/home/foo/testfile"):
...
# ディレクトリかどうかを判定
if os.path.isdir("/home/foo/testfile"):
...
# シンボリックリンクかどうかを判定
if os.path.islink("/home/foo/testfile"):
...
os.path.isfile はディレクトリではなく通常のファイルの場合に True を返す。存在しないか、存在してもディレクトリの場合は False を返す。シンボリックリンクの場合はリンク先を見て判定する。
os.path.isdir はディレクトリとして存在する場合に True を返す。存在しないか、存在してもディレクトリでない場合は False を返す。シンボリックリンクの場合はリンク先を見て判定する。
os.path.isfile | Python 2.7 documentation
http://docs.python.jp/2/library/os.path.html#os.path.isfile
os.path.isfile | Python 3 documentation
http://docs.python.jp/3/library/os.path.html#os.path.isfile
os.path.isdir | Python 2.7 documentation
http://docs.python.jp/2/library/os.path.html#os.path.isdir
os.path.isdir | Python 3 documentation
http://docs.python.jp/3/library/os.path.html#os.path.isdir
os.path.islink | Python 2.7 documentation
http://docs.python.jp/2/library/os.path.html#os.path.islink
os.path.islink | Python 3 documentation
http://docs.python.jp/3/library/os.path.html#os.path.islink
Ruby / JRuby 2015/12/26
# ファイルの種類を取得
File.ftype('/home/foo/testfile')
File.ftype は以下のような文字列を返す。
'file'- ファイル
'directory'- ディレクトリ
'link'- シンボリックリンク。リンク先の種類に依らず。
Perl 2013/12/16
# 通常のファイルかどうかを判定
# シンボリックリンクの場合はリンク先がファイルかどうかを判定
if( -f '/home/foo/testfile' ){
...;
}
# ディレクトリかどうかの判定
# シンボリックリンクの場合はリンク先がディレクトリかどうかを判定
if( -d '/home/foo/testfile' ){
...;
}
# シンボリックリンクかどうかの判定
if( -l '/home/foo/testfile' ){
...;
}
シンボリックリンク判定の演算子は、シェルスクリプトでは大文字の -L だが
Perlでは小文字の -l。
sh (シェルスクリプト) 2013/12/16
# 通常のファイルかどうかを判定
# シンボリックリンクの場合はリンク先がファイルかどうかを判定
if [ -f /home/foo/testfile ]; then
...
fi
# ディレクトリかどうかを判定
# シンボリックリンクの場合はリンク先がディレクトリかどうかを判定
if [ -d /home/foo/testfile ]; then
...
fi
# シンボリックリンクかどうかを判定
if [ -L /home/foo/testfile ]; then
...
fi
シンボリックリンク判定の演算子は、Perlでは小文字の -l だがシェルスクリプトでは大文字の -L。
-> シェルスクリプトの演算子