一連のワイルドカードパターンを含むファイルからファイルリストを生成する

一連のワイルドカードパターンを含むファイルからファイルリストを生成する

zsh一連のワイルドカードパターンを含むファイルを解析してファイルリストを作成する方法を探しています。

最終的な目標は、このファイルのリストを hg addMercurialに渡すことです。この特定の部分に興味がある人のために、私がStackOverflowで要求した別の質問のために私の質問が引き起こされました。

サンプルファイル(と呼ばれる.hginclude)は次のとおりです。

.zshrc                                                                                                                                                                                                                                                                                    
.zprofile                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.less*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
.emacs*/**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
src*/**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
.hg*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
.bash*                                                                                                                                                                                                                                                                             
.inputrc                                                                                                                                                                                                                                                                                  
.ssh

スクリプトの出力は次のようになります。文書出力を収集して取得

print globbing_pattern

各行では、ここではglobbing_pattern上記のファイルの各行を表します.hginclude

最終的に、ファイルのリストは、hg addこれらのファイルを追跡するためにMercurialに渡すことができるリストでなければなりません。

この部分の仮定は.hgignore次のとおりです。

syntax: glob
*

つまり、コマンドを介して明示的に追加されない限り、何も追跡しないでくださいhg add

答え1

バラよりhg ヘルプモード。 Mercurialはファイルからのファイル名の読み取りをサポートしているため、次のことができます。

$ hg add listfile:myfiles.txt

myfiles.txt追加するファイル名が含まれています。さらに興味深いのは、Mercurialの「ファイル名」がグローバルパターンになることです。だからあなたはmyfiles.txt含めることができます

.zshrc
.zprofile
glob:.less*
glob:.emacs*/**

待って、hg add上記のコマンドが正しいことをします。

使用することもできますファイルセット文書を選択してください。find同様のことができるようにする同様の言語です。

set:exec() and not binary()

バイナリではなく実行可能ファイル(スクリプトなど)を選択してください。


上記のコマンド〜するファイル.hgignoreは尊重されているため、問題を解決するために直接使用することはできません。ただし、次のものを使用できます。

$ hg status --all --no-status listfile:myfiles.txt

通常、無視されるすべてのファイルを含むパターンに一致するファイルのリストを取得します。その後、このファイルのリストを続行できますhg add

$ hg status -A -n -0 listfile:myfiles.txt | xargs -0 hg add

答え2

この試み:

 hg add `for i in `cat myfiles.txt` ; do ls $i ; done`

myfiles.txtにはglobが含まれています。しかし、もちろん、initpcの提案はよりきれいです。

関連情報