Rubyでディレクトリが空であるかどうかを確認する方法を教えてください。以下のようなものがあります:(。私はその関数が存在しないことを知っている) Rubyでディレクトリが空であることを確認してください
は答えて
あなただけのエントリのリストを取得し、(それが空だかどうかを自分自身のためだけでなく、あなたを見ることができます。 "と" .. "を考慮する必要があります)。 the docsを参照してください。
(Dir.entries('your_directory') - %w{ . .. }).empty?
# or using glob, which doesn't match hidden files (like . and ..)
Dir['your_directory/*'].empty?
更新:正規表現を使用するための上記の最初の方法。今は(明らかに)そうではありません。以下のコメントは、以前の(正規表現)バージョンにほとんど適用されます。あなたは、ディレクトリ内のすべてのファイルとフォルダを参照するためにエントリを使用することができます
最初のものは私にエラーを与えましたが、2番目のものは完璧に働いていました。ありがとう! –
@マーク・シマンスキー:ああ、私はカッコ内にブロックをラップしました。一定。 – coreyward
最初のコマンドは.gitのような隠しファイルも無視します。 –
:
Dir.entries('directory')
=> ['.', '..', 'file.rb', '.git']
Dir.entries('directory').size <= 2 # Check if empty with no files or folders.
あなたはまた、唯一のグロブを使用してファイルを検索することができます。
Dir.glob('directory/{*,.*}')
=> ['file.rb', '.git']
Dir.glob('directory/{*,.*}').empty? # Check if empty with no files.
しかし、 'Dir.glob( 'directory/*')'は '.'で始まるファイル、例えば'を除外します。プロファイル 'または' .git'です。 –
@(muが短すぎます) - あなたは正しいです。隠しファイルも含めて正規表現を更新しました。 –
Dir.glob( 'directory /{*,.*}')は "。"をキャプチャします。と ".."は空ですか?常にfalseを返します。 –
空のディレクトリが2つだけを持っている必要がありますリンク(。と..)。 OSXではこれが動作します:
File.stat('directory').nlink == 2
... LinuxやCygwinでは動作しません。 (ありがとう@DamianNowak)パンの答えを適応:
Dir.entries('directory').size == 2
は動作するはずです。
単純ではありませんが、* nix系のシステムでは機能します。
Dir.entries(directory_path) == ['.', '..']
これは私のテンプレートです。このファイルは、ソース内の特定のファイルを検索しています。
mydir = "/home/to/mydir"
Dir.chdir(mydir)
if Dir.entries(mydir).select(|x| x != '.' && x != '..' && x =~ /\regex.txt\z/).size > 0
do_something
elsif Dir.entries(mydir).select(|x| x != '.' && x != '..' && x =~ /\regex.txt\z/).size < 0
do_something_else
else
puts "some warning message"
end
どちらかといえば、私に知らせ:)のRuby 2.4.0のよう
、私はと呼ばれる方法で見てみたいDir.empty?
Dir.empty?('/') # => false
- 1. ディレクトリが空であることを確認してください。
- 2. vb.netでDatagridviewが空であることを確認してください
- 3. Jinja2で配列が空であることを確認してください
- 4. ディレクトリが(ファイルシステムの)ルートであることを確認してください
- 5. C++ - TCHAR配列が空であることを確認してください
- 6. Linux:メッセージキューが空であることを確認してください。
- 7. ANT:ファイルが空であることを確認してください
- 8. カフカキューが空であることを確認してください
- 9. ArrayCollectionが空であることを確認してください
- 10. NSDictionaryが空であることを確認してください。
- 11. innerHTMLが空であることを確認してください
- 12. VB intが空であることを確認してください
- 13. BSTRが空であることを確認してください
- 14. 変数が空であることを確認してください
- 15. MySQLの列が空であることを確認してください
- 16. stderrが空であることを確認してください
- 17. stdinが空であることを確認してください
- 18. シェルスクリプト:ファイルがディレクトリではなくファイルであることを確認してください。
- 19. フォーム要素がPHPで送信されたが空であることを確認してください。
- 20. RTMP:Pythonでストリームがオンラインであることを確認してください
- 21. プロパティがラムダ式でヌルであることを確認してください
- 22. すべてのテキスト入力フィールドがSeleniumで空であることを確認してください
- 23. 変数が数字であることを確認してください
- 24. charがnil objective-cであることを確認してください
- 25. 文書がROOTノードであることを確認してください
- 26. 変数の型がプリミティブであることを確認してください
- 27. Ouathトークンが無効であることを確認してください。
- 28. JTextFieldが数字であることを確認してください
- 29. プロキシがアクティブであることを確認してください。
- 30. NSNumberが小数であることを確認してください
がある "Dir.emptyは?" –
@BenFlynn 5年後、あなたの希望は実現しました(http://stackoverflow.com/a/41344613/2021397) – Janosch
@Janoschこれは、重力波の存在を証明するものでも、2016年に起こる最良のものです –