0

コンテンツが混在するディレクトリ内のサフィックスのないすべてのファイルにサフィックスを追加したいと思います。

  1. 接尾辞のないファイルのみを取得したい
  2. 次に、それらに接尾辞を追加します(たとえば、.txtまたは.html

それは私が問題を抱えているパート1です。

私はglobすべてのファイルをフェッチするために使用しています。コードの抜粋は次のとおりです。

 my @files = grep ( -f, <*> );

-fファイルのみが追加され、*ワイルドカードですべての名前が許可されていることを確認してください。

しかし、サフィックスのないファイルのみをフェッチするように書き直すにはどうすればよいですか?または、少なくとも、接尾辞付きファイルの配列を洗浄するにはどうすればよいですか?

4

3 に答える 3

2

別の grep ステートメントを追加するだけです。

my @files = grep !/\.\w{1,4}$/, grep -f, <*>;
#           -------------------

または、Borodin が指摘するように、1 つにまとめることができます。

my @files = grep !/\.\w{1,4}$/ && -f, <*>;

使用している接尾辞のタイプに応じて、正規表現をより適切に変更できます。正規表現は、文字列の末尾にあるピリオドとそれに続く 1 ~ 4 文字の英数字に一致しないファイルを探します。多数の可能な接尾辞に一致するように、かなり緩い正規表現を選択しました。

于 2012-12-22T16:06:20.400 に答える
1

を使用grepすると、正規表現を追加するだけで済みます。

my @files = grep { !/\.\w+\z/ && -f } ( <*> );
于 2012-12-22T16:07:40.633 に答える