みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シンボリックリンクを検出できない問題

あるディレクトリの下のリンク以外を抽出しようとして以下のようにファイルテスト演算子を使用してみたのですが、どうやらシンボリックリンクかどうかを上手く識別できていない様子です。
どうしてなのでしょうか?またどのようにしたら宜しいのでしょうか?


#! /bin/perl

opendir(MYVECT,"./myvect" ) || die "cannot open myvect";

while($name = readdir(MYVECT)){
if(! -l $name){
print "$name\n";
}
}
exit;


# ls -l myvect
lrwxrwxrwx aaa.vr -> test.vr

# myperl.pl
test.vr
aaa.vr

よろしくお願い致します。

投稿日時 - 2003-11-01 23:13:26

QNo.694701

困ってます

質問者が選んだベストアンサー

if(! -l $name){ の判定は、
myvectのディレクトリ下で行っていません。
従って、aaa.vrは存在しないファイルとして扱われる為、正しい結果となりません。
以下の何れかの方法をとってください。
方法1:myvectへ移動後、ファイルテストをする
chdir("./myvect");
opendir(MYVECT,"." ) || die "cannot open myvect";
以降同様
方法2:
ファイルテストを以下のようにする。
if(! -l "./myvect/$name"){

投稿日時 - 2003-11-02 00:07:08

お礼

お礼非常に遅くなり、どうもすみませんでした。ありがとう御座います。

投稿日時 - 2004-06-08 16:18:45

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

open(FD,"find . -follow -print|");
@a = <FD>;
close(FD);
ではだめですか。

投稿日時 - 2003-12-01 08:22:42

あなたにオススメの質問