zsh
一連のワイルドカードパターンを含むファイルを解析してファイルリストを作成する方法を探しています。
最終的な目標は、このファイルのリストを hg add
Mercurialに渡すことです。この特定の部分に興味がある人のために、私が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の提案はよりきれいです。