glob()とscandir()の比較
- glob()で「.」始まりのファイルが含まれてなかったので確認
- ファイルはこんな感じ
# ls -alU /tmp/filelist/
合計 200
drwxr-xr-x 3 root root 4096 6月 8 10:39 .
drwxrwxrwx 5 root root 192512 6月 8 10:39 ..
-rw-r--r-- 1 root root 2 6月 8 10:39 file_a
-rw-r--r-- 1 root root 2 6月 8 10:39 .file_b
drwxr-xr-x 2 root root 4096 6月 8 10:39 dir_a
var_dump(glob("/tmp/filelist/*"));
var_dump(glob("/tmp/filelist/.*"));
var_dump(scandir("/tmp/filelist/"));
array(2) {
[0]=>
string(19) "/tmp/filelist/dir_a"
[1]=>
string(20) "/tmp/filelist/file_a"
}
array(3) {
[0]=>
string(15) "/tmp/filelist/."
[1]=>
string(16) "/tmp/filelist/.."
[2]=>
string(21) "/tmp/filelist/.file_b"
}
array(5) {
[0]=>
string(1) "."
[1]=>
string(2) ".."
[2]=>
string(7) ".file_b"
[3]=>
string(5) "dir_a"
[4]=>
string(6) "file_a"
}
glob()の動き
- GLOB_BRACE でまとめて抽出できるらしいが
var_dump(glob("/tmp/filelist/{*,.*}", GLOB_BRACE));
- ソートされてないというか2回処理して結果をマージ?
array(5) {
[0]=>
string(19) "/tmp/filelist/dir_a"
[1]=>
string(20) "/tmp/filelist/file_a"
[2]=>
string(15) "/tmp/filelist/."
[3]=>
string(16) "/tmp/filelist/.."
[4]=>
string(21) "/tmp/filelist/.file_b"
}
var_dump(glob("/tmp/filelist/{*,*}", GLOB_BRACE));
array(4) {
[0]=>
string(19) "/tmp/filelist/dir_a"
[1]=>
string(20) "/tmp/filelist/file_a"
[2]=>
string(19) "/tmp/filelist/dir_a"
[3]=>
string(20) "/tmp/filelist/file_a"
}
- ソートされてる風にするには「.*」を先にもってくる
var_dump(glob("/tmp/filelist/{.*,*}", GLOB_BRACE));
array(5) {
[0]=>
string(15) "/tmp/filelist/."
[1]=>
string(16) "/tmp/filelist/.."
[2]=>
string(21) "/tmp/filelist/.file_b"
[3]=>
string(19) "/tmp/filelist/dir_a"
[4]=>
string(20) "/tmp/filelist/file_a"
}
var_dump(glob("/tmp/filelist/{.*,*}", GLOB_BRACE | GLOB_NOSORT));
var_dump(scandir("/tmp/filelist/", SCANDIR_SORT_NONE));
- 「ソートしない」だからどうでもいいけど、scandirとは一致しない
array(5) {
[0]=>
string(15) "/tmp/filelist/."
[1]=>
string(16) "/tmp/filelist/.."
[2]=>
string(21) "/tmp/filelist/.file_b"
[3]=>
string(20) "/tmp/filelist/file_a"
[4]=>
string(19) "/tmp/filelist/dir_a"
}
array(5) {
[0]=>
string(1) "."
[1]=>
string(2) ".."
[2]=>
string(6) "file_a"
[3]=>
string(7) ".file_b"
[4]=>
string(5) "dir_a"
}