• ベストアンサー

ファイルリスト取得

最近Cを勉強し始めた初心者です。 Perlはある程度知っています。 例えばカレントディレクトリに有る全てのファイルに対して 何か処理をしたい場合(更に例えば拡張子を変更するとか) Perlなら @myList = glob("*"); foreach(@myList) { 拡張子を変える処理 } と言う感じで出来るのですが これと同じ事をCでやろうとするとどうすれば良いのでしょうか? 別にこの処理をCでやらなくてはならないのでなく 勉強の為に自分でやってみようと思っただけなのですが。 どうかご教授お願いします。

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

  • ベストアンサー
noname#4252
noname#4252
回答No.2

libcにglob関数があるようなのでこれを使うか 勉強のためにglob関数と同様の関数を作成すればいいでしょう。

参考URL:
http://www.hmug.org/man/3/glob.html
unyunyu
質問者

お礼

このURLはとても参考になりました。 有り難う御座いました。

その他の回答 (1)

回答No.1

OS依存です。 Windowsならば FindfirstFile/FindNextFile/FindClose を使います。

unyunyu
質問者

補足

回答有り難うございます。 情報足りませんでした。 私MacOSXユーザなのです。 なのでOSはFreeBSD Unixになります。(ちょっと違いますかね。) glob関数と同じ動きをする関数、或いは こうすれば実現出来るかも…みたいなモノを期待しています。

関連するQ&A

  • 複数ファイルの読み込みについて

    perl初心者です。 あるディレクトリから拡張子がdataであるファイルを全て読み込みたいのですが、方法がわかりません。 cshで書くと foreach arg (*.data) コマンド $arg のようになりますが、perlだと foreach $arg (@arg){ コマンド $arg となりますよね? 引数がリストなのでよくわかりません。 そもそもperlではできないのでしょうか? それともう一点ですが、ファイルオープンするときに foreachループの中で open(FILE, "$arg"); とすることは可能ですか? 上の質問と組み合わせて全てのファイルを開いて作業を行いたいので。 説明が下手ですいません。補足しますのでよろしくお願いします。

    • ベストアンサー
    • Perl
  • 12文字以上の単語リスト作成

    こんばんは。Perl初心者(プログラミングの初心者です)。 たびたびお世話になっております。 現在、カレントディレクトリにあるテキストファイルから12文字以上の単語を抽出し、新規テキストファイルにはき出すスクリプトを書こうとしているのですが、うまくいきません。 以下のようなリストを記述して見たのですが、どうやら12文字以上の単語が含む「行」を抽出しているようなのです(その処理自体も不安なのですが…)。 どこがいけないのか、そもそも根本的に間違っているのか、ご指摘いただけると非常に助かります。 ご助言よろしくお願いします。 use strict; use warnings; while ( my $file = glob '*.txt' ) { open my $reading, '<', $file or die; my @content = <$reading>; close $reading; my @results = grep(/[a-zA-Z']{12,}/,@content); foreach my $result (@results) { open (NEWFILE, ">LongWords_12.txt") or die "$!"; print NEWFILE @results; close(NEWFILE); } }

    • ベストアンサー
    • Perl
  • サーバー上のPDFファイルを一覧取得したい

    レンタルサーバー(lolipop)上のディレクトリ内(/pdf)にいくつかPDFファイルがあり、できればそのPDFファイルを画像化して、一覧表示し、ファイルへのリンクも記述したいです。 現状、PHPにて下記のようにすると、テキストリンクで表示はできました。 <?php foreach (glob("*.pdf") as $filename) { echo "<a href='" .$filename. "'>" .$filename. "</a><br>\n"; } ?> 上記に<img src="画像化したファイル">を入れたいです。 PHP初心者の為、色々試していますが上手くいきません。 どなたかお解かりになる方、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ファイル名が記入されたファイルを読み込んでcdする

    ファイル名が記入されたファイルを読み込んでカレントディレクトリを変更するにはどうしたら良いでしょうか?   具体的に申し上げると、    カレントディレクトリに filepass.txt というファイルが存在し、 中身には、例えば、 C:\Software と書かれています。   MATLABで、 filepass.txtを読み込み、 中に書かれている、 ディレクトリ名に、   カレントディレクトリを変更する(cd) にはどうしたらよいでしょうか?

  • 1ファイルずつ読み込みたい

    ウィンドウズ環境でactive perlを利用しています。 あるディレクトリーの中に2000位のファイルが入っており、このファイルを読み込んで置換処理を行うため下記のようなperlを作っています。 1ファイルはおおよそ3000行くらいです。 foreach(<*.html>) { open(IN_FILE, $_) || die; open(OUT, ">$_.tmp") || die; @record=<IN_FILE>; foreach $record (@record){ $record =~s/aaa/bbb/isg; } print OUT @record; close( IN_FILE); close( OUT); rename("$_.tmp", $_) ; } 当たり前かもわかりませんが、メモリー不足になり処理が中断します。 ディレクトリーの中のファイル数を600程度に少なくすると処理が完了します。 そこで質問なのですが、ディレクトリーの中のファィルを一度に全部読み込まず、1ファイルずつ順次読み込んでいくことはできないでしょうか。 最初の1行目のforeachをwhileに変えたりしたのですがうまくいきません。 対応策あればご教示ください。

    • ベストアンサー
    • Perl
  • Linux + phpで2バイト文字のパス指定

    RedHatLinux4 update6 + Apache2.2.8 + php5.2.5でプログラムを作成しております。 //server/share/hogehoge を /opt/lampp/htdocs/share にcifsマウントして、サーバの"hogehoge"ディレクトリにある"補毛補毛"というディレクトリにアクセスできるようphpに記述したいのですが、うまくいかずに困っています。 /opt/htdocs/test.php ------------------------------------------------------------------- $glob="./hogehoge/補毛補毛"; chdir($glob);           //カレントディレクトリ移動 foreach (glob("*.xls") as $filepath) { echo "$filepath size " . filesize($filepath) . "\n"; } ------------------------------------------------------------------- 具体的には上記のようなソースを書いたのですがうまく動きませんでした。./hogehoge/までなら動くのですが、そこに2バイト文字を含めるとうまく動きません。 どうにかしてうまく動かす方法はありませんでしょうか。サーバ側のディレクトリ名を変更することはできません。 ご回答、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • ディレクトリ以下のファイル名を取得する

    ディレクトリ名を指定するだけで、 そのディレクトリ内にある全てのデータファイルを 読み込んで処理するプログラムをC++で作ろうと考えています。 その為に、ディレクトリ以下のファイルのファイル名を 取得する方法(命令)を教えて頂きたく思います。 よろしくお願いします。

  • Ruby Win環境 .(ドット)から始まるファイルのctime

    カレントディレクトリにある全てのファイル及びディレクトリの変更時刻を取得したいです。 Dir.foreach('.') do |file| puts File.ctime(file) end そこで、上記Rubyスクリプトを作成し実行しました。 しかし、カレントに.(ドット)から始まるファイルを置いて上記rubyスクリプトを実行すると、 `ctime': No such file or directory - .htaccess (Errno::ENOENT)のエラーになってしまいます。(.htaccessをカレントに置いた例) Win環境固有のものかと思いますが、なにか対策があるでしょうか?

  • readdir におけるフルパスでのファイル名取得(1)

    前提: current directory---perl scriptが存在する data directory -----.\DATA¥ current directory直下のフォルダ"DATA"に含まれるファイル名(text file)の取得は、 ------------------------------ opendir(DIR,"./DATA/"); @file=readdir(DIR); closedir(DIR); foreach $myfilename(@file){ if($myfilename=~/txt|TXT/){ print "$myfilename\n"; #確認用 } } で、できますが、フルパス付は、どのようにすればできるでしょうか? 現状、DOS promptで下記のようにやっています。 dir /s/b/o .\DATA\*.txt > filelist.dat これを、perlで読み込んで、処理をやっています。 readdirをうまく使って、perlの中で済ませてしまいたいのです。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • VBA カレントディレクトリ取得について

    お世話になってます。 VBAの初心者です。 test.mdbファイルを "C\TEST" という作業ディレクトリ配下において そのmdbのモジュールでCurDirを使用してカレントディレクトリを取得する という処理をVBAで書きたいのですが、 Dim strPath As String strPath = CurDir("C") と記述し実行しても strPathに格納される値は "C\" となってしまいます。 本当は"C\TEST"という値を取得したいのですが、 使用方法が間違っているのか、何が悪いのかよく分かりません。 よろしくお願い致します。