gitでは*.jpg
、*.*
のようにファイル名を指定するのに*
を使用できますが、ディレクトリについてはどうですか?任意のディレクトリ名に一致するパス
すべてのディレクトリを指定する方法はありますか?
これは動作しません:
git rm firstdirectory/*/thirddirectory
*
は、 "すべてのディレクトリ" 効果は行いません。
gitでは*.jpg
、*.*
のようにファイル名を指定するのに*
を使用できますが、ディレクトリについてはどうですか?任意のディレクトリ名に一致するパス
すべてのディレクトリを指定する方法はありますか?
これは動作しません:
git rm firstdirectory/*/thirddirectory
*
は、 "すべてのディレクトリ" 効果は行いません。
gitするディレクトリを指定しているため、コマンドが機能しません。あなたのシェルが正しい拡張を行いますが、最終的にGitはgitのは、あなたのコマンドを動作させるために(git rm
ファイルを期待する)
が好き-r
フラグを使用し、Gitは、ディレクトリを受け入れていないgit rm firstdirectory/somedir/thirddirectory
、受信:
git rm -r firstdirectory/*/thirddirectory
を
あなたが記述するグロブ表現の拡張は、gitではなくシェルによって行われます。 echo *
のようなことをすれば、これを見ることができます。このコマンドは、アスタリスクを持つ単一の引数ではなく、ファイル名である引数のリストを受け取ります。
場合によっては、find . -ipath
が必要なパスを識別する最も有用な方法です。ディレクトリをフェッチするために-type d
を追加することができます。 findには、一致するオブジェクトを選択するための多数のオプションがあります。これをxargs
に入力してgit
を使用することができます。例:
find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm