問題タブ [readdir]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - ディレクトリ内のファイルをソート順に読み取るにはどうすればよいですか?
Perl でopendir
, readdir
, およびを使用してディレクトリを読み取るとclosedir
、readdir
関数は特定の順序でファイルを読み取るようには見えません (私にはわかります)。
エポックタイムスタンプで名前が付けられたサブディレクトリを持つディレクトリを読んでいます:
これらのディレクトリを番号順に読みたいと思います。これにより、最も古いディレクトリが最初になります。
を使用するreaddir
と、最初に読み取られるのは 1228324260 で、これが真ん中です。ディレクトリの内容を配列に入れて並べ替えることができることは知っていますがreaddir
、並べ替えられた順序で読み取るために渡すことができるオプションはありますか? それとも、すべてを配列にプッシュして配列をソートするよりも、これを達成するためのよりエレガントな方法でしょうか? おそらくこれを行うためのモジュールもありますが、私たちの環境にモジュールをインストールするのは難しいので、組み込みモジュールでない限り、モジュールを使用したくない...
ありがとう!
編集 要求に応じて、使用しているコードを投稿しています:
php - 日本語のファイル名に関するphpreaddirの問題
私は次のコードを持っています
日本語のようなmb言語があると、正しく表示されず、代わりに究極超人あ〜?????〜?のように表示されます。究極超人あ〜る</ p>
とにかく、正しい名前を表示するか、他の人がダウンロードできるようにしますか?
私を助けてくれてありがとう :)
performance - 250,000 個のファイルがあるディレクトリの Perl の readdir を高速化するにはどうすればよいですか?
Perl readdir を使用してファイル リストを取得していますが、ディレクトリには 250,000 を超えるファイルが含まれているため、readdir の実行に長時間 (4 分以上) かかり、80MB を超える RAM を使用します。これは 5 分ごとに繰り返されるジョブであることを意図していたため、この遅延時間は許容できません。
詳細: 別のジョブが、スキャン中のディレクトリを (1 日に 1 回) 埋めます。この Perl スクリプトは、ファイルの処理を担当します。スクリプトの反復ごとにファイル数が指定されており、現在は実行ごとに 1000 です。Perl スクリプトは 5 分ごとに実行され、(該当する場合) 最大 1000 個のファイルを処理します。Perl が複雑なワークフローをトリガーするデータベースにデータをプッシュする際に、ダウン ストリーム処理を維持できるようにすることを目的としたファイル数の制限。
ディレクトリからファイル名を取得する別の方法はありますか?理想的には 1000 (変数で設定) に制限すると、このスクリプトの速度が大幅に向上しますか?
visual-studio - Microsoft Visual Studio: opendir() と readdir()、どうやって?
以前、Dev-cpp でこの種のコードを使用したことがあります。
しかし、今私は MSVC++ を使用しており、そこにそれらのファイルを追加する方法がわかりません。そこに dirent.h/dir.h/errno.h をコピーしようとしましたが、それらのファイル内の別の含まれているファイルに関連する別のエラーが発生します.. .、そしてファイルを見ると、そこにmingwのものがあるので、コンパイラに関連していますか? idk MSVC++ が使用するコンパイラーですが、これらのファイルを MSVC++ にコピーペーストして動作させることは可能ですか?
MSDN からいくつかのコードを調べようとしましたが、本当にめちゃくちゃだったので、上記のこれらの関数を使用できることを願っています...
perl - ファイル名をパターンでフィルタリングする
「abc」などの特定のパターンで始まるディレクトリ内のファイルを検索する必要があります。また、結果から「.xh」で終わるすべてのファイルを削除する必要があります。Perl でそれを行う方法がわかりません。
私はこのようなものを持っています:
「.xh」で終わるすべてのファイルを結果から除外する必要もあります
ありがとう、ビー
php - $count が更新されないのはなぜですか?
私はそれがこの行と関係があると思います:
確信はないけど
php - PHPのreaddirとsort
私は小さなギャラリーを作っています。ディレクトリからファイル名を読み取り、先頭の数字とファイル拡張子をいくつか削除した後、以下のファイル名を印刷したいと思います。
コードには2つのバージョンがあります。
バージョン1はソートされません
バージョン2はソートされますが、ファイル名を操作できません
はい、私は愚かだと知っています。ああ!
perl - Perlでreaddirよりもglobを好む(またはその逆)理由は何ですか?
この質問は、これから派生したものです。いくつかの歴史:私が最初にPerlを学んだとき、私はそれがより簡単であると思ったので、ほとんど常に+glob
ではなく使用しました。その後、さまざまな投稿や読み物がそれが悪いことを示唆したので、今ではほとんどいつもを使用しています。opendir
readdir
glob
readdir
この最近の質問を考えた後、私はどちらか一方の選択の理由が二の次であるかもしれないことに気づきました。それで、私はいくつかの賛否両論をレイアウトするつもりです、そして私はより経験豊富なPerlの人々がチャイムを鳴らして明確にすることができることを望んでいます。一言で言えば、(一部またはすべての場合に)好むまたは好むやむを得ない理由があるかどうかというglob
質問readdir
です。readdir
glob
glob
長所:
- ドットファイルはありません(要求しない限り)
- アイテムの注文は保証されています
- ディレクトリ名をアイテムに手動で追加する必要はありません
- より良い名前(名前だけで判断する場合は、
glob
コンテストreaddir
ではありません) (ysthの回答から。以下の
/li>glob
短所4を参照)存在しないファイル名を返すことができます。
glob
短所:
- 古いバージョンは単純に壊れています(しかし、「古い」は5.6より前のことを意味します。率直に言って、5.6より前のPerlを使用している場合は、より大きな問題があります)
stat
毎回呼び出します(つまり、stat
ほとんどの場合、無駄に使用します)。- ディレクトリ名のスペースに関する問題(これはまだ本当ですか?)
(ブライアンの回答から)存在しないファイル名を返すことができます:
/li>
readdir
長所:
- (ブライアンの答えから)
opendir
プログラムで渡す(そして再利用する)ことができるファイルハンドルを返しますが、glob
単にリストを返します - (ブライアンの答えから)
readdir
は適切なイテレータであり、、、に関数を提供しrewinddir
ますseekdir
。telldir
- もっと早く?(上からのいくつかの機能に基づいた純粋な推測
glob
。とにかくこのレベルの最適化についてはあまり心配していませんが、理論的なプロです。) - エッジケースのバグが発生しにくいのは
glob
? - デフォルトですべて(ドットファイルも)を読み取ります(これも短所です)
- ファイルに名前を付けないように説得するかもしれません
0
(短所もあります-ブラッドの答えを参照してください) - 誰?ビュラー?ビュラー?
readdir
短所:
- ディレクトリ名の前に付けるのを忘れた場合は、ファイルテストを実行したり、アイテムをコピーしたり、アイテムを編集したりするときに、ビットが表示されます...
- とアイテムを忘れて
grep
しまった場合は、アイテムを数えるか、ファイルツリーを再帰的に下って行くか....
..
- ディレクトリ名の前に付けることについて言及しましたか?(補足ですが、Perl Beginnersメールリストへの私の最初の投稿は、この落とし穴に関連する古典的な「ファイルテストを含むこのコードが機能しないのはなぜですか?」という問題でした。どうやら、私はまだ苦いです。)
- アイテムは順不同で返送されます。これは、多くの場合、何らかの方法でそれらを並べ替えることを覚えておく必要があることを意味します。(これは、速度が向上し、実際にアイテムを並べ替える方法と必要性について考えることを意味する場合、プロになる可能性があります。)編集:恐ろしく小さいサンプルですが、Mac
readdir
では大文字と小文字を区別せずにアルファベット順にアイテムを返します。DebianボックスとOpenBSDサーバーでは、順序は完全にランダムです。私はAppleの組み込みPerl(5.8.8)と自分でコンパイルした5.10.1を使ってMacをテストしました。Adobeボックスは、OpenBSDマシンと同様に5.10.0です。これはPerlではなくファイルシステムの問題なのだろうか? - デフォルトですべて(ドットファイルも)を読み取ります(これもプロです)
- 名前の付いたファイルを必ずしもうまく処理できるとは限りません
0
(プロも参照してください-ブラッドの回答を参照してください)