問題タブ [file-find]

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.

0 投票する
6 に答える
4272 参照

perl - 特定のファイルが見つかったら、再帰的な検索機能から抜け出すにはどうすればよいですか?

このモジュールを使用してFile::Find、ディレクトリ ツリーをトラバースしています。特定のファイルを見つけたら、検索をやめたいと思います。どうやってやるの?

0 投票する
3 に答える
2318 参照

perl - File :: Findが壊れたシンボリックリンクを処理しないのはなぜですか?

PerlのFile::Findモジュールを使用して、ファイル、ディレクトリ、およびリンクをスキャンしています。とりわけ、私が書いているユーティリティが壊れた(File :: Findの用語でぶら下がっている)シンボリックリンクを報告することを望んでいます。理論的には、これは、壊れたリンクが見つかったときに呼び出されるサブルーチンを作成し、find次のような適切な値のハッシュ参照を使用してメソッドを呼び出すことによってサポートされます。

これをテストするために意図的に壊れたリンクを作成したにもかかわらず、File::Findは決してサブルーチンを呼び出しませんDangling。この機能を除いて、他のすべてが機能します。つまり、ProcessFileサブが期待どおりに呼び出され、リンクがたどられます。

0 投票する
3 に答える
451 参照

windows - File :: Findで見つかったファイルを必要な関数の内部から開くにはどうすればよいですか?

私は以下のようなコードを持っています。関数(によって呼び出される)でファイル$File::Find::name(この場合は./tmp/tmp.h)を開くと、「ファイルを開くことができません。/tmp/tmp.hreason=temp.plの36行目98行目にそのようなファイルまたはディレクトリはありません。 。」searchFile::Find::find

別の関数でファイルを直接開くと、ファイルを開くことができます。誰かがこの振る舞いの理由を教えてもらえますか?Windowsでactiveperlを使用していますが、バージョンは5.6.1です。

0 投票する
2 に答える
4663 参照

perl - File :: Findを使用して、相対パスのみでファイルを印刷するにはどうすればよいですか?

パスからファイルを見つけるために、以下のコードでFile::Findを使用しています/home/user/data

dirパスをファイルを検索する必要があるパスに変更しているので、それでもフルパスのファイルが表示されます。すなわち

しかし、私は次のような出力が欲しい

誰かが私にファイルを見つけて現在の作業ディレクトリからのみ表示するためのコードを提案してもらえますか?

0 投票する
2 に答える
3165 参照

performance - PerlのFile::Findを高速化するにはどうすればよいですか?

Libという名前のフォルダーがあり、File :: Findモジュールを使用して、ディレクトリ全体でそのフォルダーを検索していますD:\。ドライブに多くのサブディレクトリがある場合は、検索に長い時間がかかります。たとえば、5分でもかかります。そのLibをより速く検索して、数秒で実行できるようにするにはどうすればよいですか?

私のコードは次のようになります。

0 投票する
4 に答える
6234 参照

perl - 各ファイルを処理するFile::Findサブルーチンにパラメーターを渡すにはどうすればよいですか?

File :: Findを使用して、各ファイルを処理する関数にパラメーターを渡すにはどうすればよいですか?

いくつかの3チャンネルTIFFファイルをJPEGファイル(TIFFファイルごとに3つのJPEGファイル)に変換するためにディレクトリをトラバースするPerlスクリプトがあります。これは機能しますが、各ファイルを処理する関数にいくつかのパラメーターを渡したいと思います(グローバル変数を使用する場合を除く)。

これが、パラメーターを渡そうとしたスクリプトの関連部分です。

$isDryRunスカラーです。$startDir文字列であり、ディレクトリへのフルパスです。

$IsDryRun2設定されていません:

TIFFconvert.pl行197(#1)での連結(。)または文字列での初期化されていない値$ IsDryRun2の使用(W未初期化)未定義の値が、すでに定義されているかのように使用されました。「」または0として解釈されましたが、間違いだった可能性があります。この警告を抑制するには、定義された値を変数に割り当てます。

(パラメーターなしの古い呼び出しはfind ( \&findFiles, $startDir);:)


テストプラットフォーム(ただし、本番環境はLinuxマシン、Ubuntu 9.1、Perl 5.10、64ビット):ActiveStatePerl64ビット。WindowsXP。perl -vから:ActiveStateによって提供されるMSWin32-x64-マルチスレッドバイナリビルド1004[287188]用にビルドされたv5.10.0

0 投票する
3 に答える
2558 参照

perl - PerlのFile::Findを使用するときに、必要な関数にパラメーターを渡すにはどうすればよいですか?

重複の可能性:
各ファイルを処理するFile :: Findサブルーチンにパラメーターを渡すにはどうすればよいですか?

次のようなPerlのFile::Findモジュールを使用できます。

関数にパラメータを追加するにはどうすればよいwantedですか?

たとえば、/tmp各ファイルからいくつかの情報を抽出する際にファイルをトラバースしたいので、結果を別のディレクトリに保存する必要があります。出力ディレクトリはパラメータとして指定する必要があります。

0 投票する
1 に答える
177 参照

perl - File::Find が大きなディレクトリを完全にトラバースする前に終了したのはなぜですか?

合計 2,153,425 項目のディレクトリが存在します (Windows フォルダーのプロパティによる)。いくつかのサブディレクトリ内にある .jpg および .gif 画像ファイルが含まれています。タスクは、各ファイルの名前を照会して関連情報を取得し、別の場所に保存しながら、画像を別の場所に移動することでした。

File::Find を使用したスクリプトは、20462 ファイルで終了しました。好奇心から、1,734,802 のカウントを返す項目をカウントするための小さな再帰関数を作成しました。違いは、フォルダーをカウントせず、 -f テストに合格したファイルのみをカウントしたという事実によって説明できると思います。

問題自体は、ディレクトリをトラバースする代わりに、最初にファイル名を照会することによって別の方法で解決できます。File::Find がすべてのファイルのごく一部で終了した原因は何だったのだろうかと思っています。

データは NTFS ファイル システムに保存されます。

これがスクリプトの要点です。同じ番号を返した process_img() のカウンターだけでスクリプトを再実行したため、DBI のものを含めることは関係ないと思います。

編集:

eval は BDI エラーに関して数回吠えました:

これは、'St' と 'South' の間のダブル ダッシュによるものだと思います。他の性質のエラーは報告されていません。

そして、ファイルをカウントするために使用した別の方法を次に示します。

0 投票する
1 に答える
29611 参照

perl - ディレクトリ内のすべてのファイル名を再帰的にリストするperlスクリプト

私は次のperlスクリプトを書きましたが、問題は常にelse部分にあり、ファイルではないと報告しています。入力で指定しているディレクトリにファイルがあります。ここで何が間違っていますか?

私の要件は、ディレクトリ内のすべてのファイルに再帰的にアクセスし、それを開いて文字列で読み取ることです。しかし、ロジックの最初の部分は失敗しています。

0 投票する
1 に答える
1905 参照

perl - ディレクトリがUIDで書き込み可能かどうかを確認するにはどうすればよいですか?

File::Find::Ruleディレクトリが特定のUIDで書き込み可能かどうかを判断するために使用できますか?

私は次のテストを使用しました:

$dirしかし、私が知っているテストディレクトリが制限されている場合でも、は常に書き込み可能であることが返されます。

このテストを機能させるために、このテストにどのような調整を加えることができますか?

編集

を使用use File::Find::Rule qw(permissions)すると、スクリプトがクラッシュしました。permissions()以前の操作での以前の使用法でこのオプションを指定する必要はありませんでしたFile::Find::Rule

次のようにルールを調整すると、うまくいきます。

ここでは、サブディレクトリリストに親ディレクトリが存在するかどうかをテストしています。

のサブディレクトリの親ディレクトリ$dir.

そして、そのディレクトリがのリストに存在する場合@subDirs、それは書き込み可能でなければなりません。

このモジュールを提案してくれた池上に感謝します。