問題タブ [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.
perl - 特定のファイルが見つかったら、再帰的な検索機能から抜け出すにはどうすればよいですか?
このモジュールを使用してFile::Find
、ディレクトリ ツリーをトラバースしています。特定のファイルを見つけたら、検索をやめたいと思います。どうやってやるの?
perl - File :: Findが壊れたシンボリックリンクを処理しないのはなぜですか?
PerlのFile::Findモジュールを使用して、ファイル、ディレクトリ、およびリンクをスキャンしています。とりわけ、私が書いているユーティリティが壊れた(File :: Findの用語でぶら下がっている)シンボリックリンクを報告することを望んでいます。理論的には、これは、壊れたリンクが見つかったときに呼び出されるサブルーチンを作成し、find
次のような適切な値のハッシュ参照を使用してメソッドを呼び出すことによってサポートされます。
これをテストするために意図的に壊れたリンクを作成したにもかかわらず、File::Findは決してサブルーチンを呼び出しませんDangling
。この機能を除いて、他のすべてが機能します。つまり、ProcessFile
サブが期待どおりに呼び出され、リンクがたどられます。
windows - File :: Findで見つかったファイルを必要な関数の内部から開くにはどうすればよいですか?
私は以下のようなコードを持っています。関数(によって呼び出される)でファイル$File::Find::name
(この場合は./tmp/tmp.h
)を開くと、「ファイルを開くことができません。/tmp/tmp.hreason=temp.plの36行目98行目にそのようなファイルまたはディレクトリはありません。 。」search
File::Find::find
別の関数でファイルを直接開くと、ファイルを開くことができます。誰かがこの振る舞いの理由を教えてもらえますか?Windowsでactiveperlを使用していますが、バージョンは5.6.1です。
perl - File :: Findを使用して、相対パスのみでファイルを印刷するにはどうすればよいですか?
パスからファイルを見つけるために、以下のコードでFile::Findを使用しています/home/user/data
。
dirパスをファイルを検索する必要があるパスに変更しているので、それでもフルパスのファイルが表示されます。すなわち
しかし、私は次のような出力が欲しい
誰かが私にファイルを見つけて現在の作業ディレクトリからのみ表示するためのコードを提案してもらえますか?
performance - PerlのFile::Findを高速化するにはどうすればよいですか?
Libという名前のフォルダーがあり、File :: Findモジュールを使用して、ディレクトリ全体でそのフォルダーを検索していますD:\
。ドライブに多くのサブディレクトリがある場合は、検索に長い時間がかかります。たとえば、5分でもかかります。そのLibをより速く検索して、数秒で実行できるようにするにはどうすればよいですか?
私のコードは次のようになります。
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。
perl - PerlのFile::Findを使用するときに、必要な関数にパラメーターを渡すにはどうすればよいですか?
次のようなPerlのFile::Findモジュールを使用できます。
関数にパラメータを追加するにはどうすればよいwanted
ですか?
たとえば、/tmp
各ファイルからいくつかの情報を抽出する際にファイルをトラバースしたいので、結果を別のディレクトリに保存する必要があります。出力ディレクトリはパラメータとして指定する必要があります。
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' の間のダブル ダッシュによるものだと思います。他の性質のエラーは報告されていません。
そして、ファイルをカウントするために使用した別の方法を次に示します。
perl - ディレクトリ内のすべてのファイル名を再帰的にリストするperlスクリプト
私は次のperlスクリプトを書きましたが、問題は常にelse部分にあり、ファイルではないと報告しています。入力で指定しているディレクトリにファイルがあります。ここで何が間違っていますか?
私の要件は、ディレクトリ内のすべてのファイルに再帰的にアクセスし、それを開いて文字列で読み取ることです。しかし、ロジックの最初の部分は失敗しています。
perl - ディレクトリがUIDで書き込み可能かどうかを確認するにはどうすればよいですか?
File::Find::Rule
ディレクトリが特定のUIDで書き込み可能かどうかを判断するために使用できますか?
私は次のテストを使用しました:
$dir
しかし、私が知っているテストディレクトリが制限されている場合でも、は常に書き込み可能であることが返されます。
このテストを機能させるために、このテストにどのような調整を加えることができますか?
編集
を使用use File::Find::Rule qw(permissions)
すると、スクリプトがクラッシュしました。permissions()
以前の操作での以前の使用法でこのオプションを指定する必要はありませんでしたFile::Find::Rule
。
次のようにルールを調整すると、うまくいきます。
ここでは、サブディレクトリリストに親ディレクトリが存在するかどうかをテストしています。
のサブディレクトリの親ディレクトリ$dir
は.
そして、そのディレクトリがのリストに存在する場合@subDirs
、それは書き込み可能でなければなりません。
このモジュールを提案してくれた池上に感謝します。