2016-08-03 10 views
1

FTPサーバからパターンファイルを取得するために提供されるファイル名パターンに問題があります。UnixのFTPサーバからファイルを取得するためのファイルパターン

現在、ファイルを取得するパターンとしてABC_YYYYMMDD*.sha1を使用しています。上記のパターンを使用して最後のファイルを取得します。場合によっては、.gz.sha1が後で来る場合もあり、時にはもう片方が来ることもあります。

ABC_20160801060000.sha1 
ABC_20160801060000.txt.gz.sha1 

私はファイルは常にだけABC_YYYYMMDDHHMISS.sha1を選ぶ必要がありますように、ファイル名のパターンを提供する必要があります。

必要なものと一致する偽のパターンが必要ですか?

答えて

1

あなたはこれらのファイルの名前を一致させるためのfind-regexオプションを使用することができます -

find . -type f -regextype posix-extended -regex '.*ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1' 

は、簡単なグロブパターンマッチングを行い-name旗の上に、このためfindでサポートされている-regexフラグを使用しています。

findmanページは-regexのためのより低いと言う: - このpage

-regex pattern 
      File name matches regular expression pattern. This is a match 
      on the whole path, not a search. 

-regextype name 
      This option controls the variety of regular expression syntax 
      understood by the ‘-regex’ and ‘-iregex’ tests. This option is 
      positional; that is, it only affects regular expressions which 
      occur later in the command line. If this option is not given, GNU 
      Emacs regular expressions are assumed. 

posix-extended正規表現の種類についての詳細。他のサポートされている正規表現型はhereです。

$ ls ABC_2016* 
ABC_20161231225950.sha1 ABC_20169231225990.sha1 

$ find . -type f -regextype posix-extended -regex '.*ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1' 
./ABC_20161231225950.sha1 

アップデート: - - :regextypefindバージョンではサポートされていない場合

-nameフラグを使用して簡単なグロブ構築物がに使用することができますアクションでそれを見るために

同じ達成する。

$ ls ABC_2016* 
ABC_20161231225950.sha1 ABC_20169231225990.sha1 

$ find . -type f -name 'ABC_2[0-9][0-9][0-9][0-1][0-2][0-3][0-9][0-2][0-2][0-5][0-9][0-5][0-9].sha1' 
./ABC_20161231225950.sha1 
+0

ありがとうございました。しかし、find as FTPコマンドを発行する必要があります。これらのパターンファイルは、FTPサーバーに存在します。 FTPサーバーで 'find'コマンドが機能しますが、オプションは認識されません。 :( – user1999315

+0

@ user1999315: '-name'フラグだけを使って解決策を紹介してください。 – Inian

関連する問題