0

私が持っているもの: 他の多くのフォルダーとファイルを含むフォルダーがあります。l1 というフォルダー内にあるすべてのファイルへのパスのリストを取得する必要があります。メイン ディレクトリ内には l1 という名前のさまざまなフォルダーが多数あるため、各 l1 フォルダーを検索し、その中の各ファイルへのパスを返す必要があります。すべての l1 フォルダーの場所のリストを印刷できましたが、これらの場所内のファイルを一覧表示する方法がわかりません。すべての l1 フォルダーの場所を見つけるためのコードを以下に示します。

#!/usr/bin/perl

use strict;
use warnings;
use File::Find;
my @folder;
sub wanted {
    if ( -d && $_ eq 'l1' ) {
        push @folder, $File::Find::name;
    }
}
find \&wanted, '/mnt/vbox_share/';
open fp, ">process.txt";
print fp "@folder";

検索したフォルダ内にあるすべてのファイル パスを一覧表示できるようにするには、何を変更または追加する必要がありますか?

4

1 に答える 1

2

必要なのはこれだけです。

  • wantedファイル以外のすべてを無視し、ディレクトリとリンクを破棄します

  • ファイルへのフルパスは、実行中の$File::Find::nameときにwanted

  • それを分割し/、最後から2番目の要素を取得する$path[-2]と、親ディレクトリの名前が見つかります

  • printそのディレクトリが等しい場合の完全なファイルパスl1

.

use strict;
use warnings;

use File::Find;

find( \&wanted, '/path/to/root/dir');

sub wanted {
  return unless -f;
  my @path = split /\//, $File::Find::name;
  print $File::Find::name, "\n" if @path > 1 and $path[-2] eq 'l1';
}
于 2013-07-29T20:24:49.060 に答える