2013-03-05 8 views
5

gitでは*.jpg*.*のようにファイル名を指定するのに*を使用できますが、ディレクトリについてはどうですか?任意のディレクトリ名に一致するパス

すべてのディレクトリを指定する方法はありますか?

これは動作しません:

git rm firstdirectory/*/thirddirectory 

*は、 "すべてのディレクトリ" 効果は行いません。

答えて

3

gitするディレクトリを指定しているため、コマンドが機能しません。あなたのシェルが正しい拡張を行いますが、最終的にGitはgitのは、あなたのコマンドを動作させるために(git rmファイルを期待する)

が好き-rフラグを使用し、Gitは、ディレクトリを受け入れていないgit rm firstdirectory/somedir/thirddirectory、受信:

git rm -r firstdirectory/*/thirddirectory 
0

あなたが記述するグロブ表現の拡張は、gitではなくシェルによって行われます。 echo *のようなことをすれば、これを見ることができます。このコマンドは、アスタリスクを持つ単一の引数ではなく、ファイル名である引数のリストを受け取ります。

場合によっては、find . -ipathが必要なパスを識別する最も有用な方法です。ディレクトリをフェッチするために-type dを追加することができます。 findには、一致するオブジェクトを選択するための多数のオプションがあります。これをxargsに入力してgitを使用することができます。例:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm 
関連する問題