18

ドットファイルをDir['*']含めるには.gitignoreどうすればよいですか?...

つまり、より良い方法はありますか?

`ls -A`.split "\n"

おそらくDir?次のソリューションは近いですが、両方に.&が含まれています..

Dir.glob('*', File::FNM_DOTMATCH)
Dir['{.*,*}']

したがって、次のように機能します。

Dir.glob('*', File::FNM_DOTMATCH) - ['.', '..']

しかし、これを行うためのより良い方法はまだありますか?

MeteorHomebrewFormulaの9行目を修正するためにこれを疑問に思っています。

4

3 に答える 3

20

を使用することはできませんがDir[]、を使用することはできDir.globますDir[]

Dir.glob("*", File::FNM_DOTMATCH)

.あなたは&を..簡単に取り除くことができます:

Dir.glob("*", File::FNM_DOTMATCH).tap { |a| a.shift(2) }

しかし、私はおそらくあなたの元の方法に固執するのが最善だと思います:

Dir.glob("*", File::FNM_DOTMATCH) - %w[. ..]

(他の方法の中でも)

ただし、より高度なグロブが必要ない場合は、必要なものがすべてである可能性があります(より多くのフィルタリングが必要な場合は、いつでも結果をさらに進めることができ*ます)。Dir#childrenfiltergrep

Dir.children('.')
于 2012-07-08T19:01:11.703 に答える
3

短いバージョンは次のとおりです。

Dir['{.[^\.]*,*}']
于 2013-12-03T16:12:00.020 に答える
0

隠しファイルを含むディレクトリ内のすべてのファイルを見つけて、、、、およびディレクトリを削除する方法は.git/次のとおりです。...

      files = Dir.glob("#{ARGV.first}/**/*", File::FNM_DOTMATCH)
      files = files.grep_v(/\/.git\//).grep_v(/\/\.$/).grep_v(/\/\.\.$/)
      files = files.select { |file| File.file?(file) }
于 2021-11-20T00:38:16.017 に答える