하나의 디렉토리에 있는 모든 파일을 반복
루비로 루프를 작성하여 각 파일에서 코드 블록을 실행하려면 어떻게 해야 합니까?
저는 루비가 처음이고, 이것을 하는 방법은 각각의 루프를 하는 것이라고 결론을 내렸습니다.
루비 파일은 루프하고 싶은 디렉터리가 아닌 다른 디렉터리에서 실행됩니다.
해봤어요.Dir.foreach그걸 작동시킬 수가 없었어요
다른 사람들이 말했듯이, 이것은 여기서 좋은 선택입니다.그러나 참고:Dir::foreach그리고 항상 포함될 것입니다..그리고...(현재 및 상위 디렉토리).일반적으로 이러한 작업을 수행하고 싶지 않을 것이므로 또는 (ma11hew28에서 제안한 대로) 를 사용하거나 다음과 같은 작업을 수행할 수 있습니다.
Dir.foreach('/path/to/dir') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
end
Dir::foreach그리고.Dir::entries(뿐만 아니라)Dir::each_child그리고.Dir::children숨겨진 파일 및 디렉터리도 포함됩니다.종종 이것이 여러분이 원하는 것이지만, 그렇지 않다면, 여러분은 그것들을 건너뛰기 위해 무언가를 할 필요가 있습니다.
또는 단순 와일드카드 일치를 제공하는 항목을 확인할 수 있습니다.
Dir.glob('/path/to/dir/*.rb') do |rb_filename|
# Do work on files & directories ending in .rb
end
내가 가장 좋아하는 읽기 쉬운 방법은 다음과 같습니다.
Dir.glob("*/*.txt") do |my_text_file|
puts "working on: #{my_text_file}..."
end
또한 이 기능을 확장하여 하위 dir의 모든 파일에서 작업할 수도 있습니다.
Dir.glob("**/*.txt") do |my_text_file| # note one extra "*"
puts "working on: #{my_text_file}..."
end
또한 Dir는 디렉터리에서 모든 파일의 배열을 가져오는 구문이 더 짧습니다.
Dir['dir/to/files/*'].each do |fname|
# do something with fname
end
Dir.foreach("/home/mydir") do |fname|
puts fname
end
찾기 라이브러리는 이 작업을 위해 특별히 설계되었습니다. https://ruby-doc.org/stdlib-2.5.1/libdoc/find/rdoc/Find.html
require 'find'
Find.find(path) do |file|
# process
end
이것은 표준 루비 라이브러리이므로 사용 가능해야 합니다.
건너뛰기.&..사용할 수 있습니다.
Dir.each_child('/path/to/dir') do |filename|
puts filename
end
Dir::children 파일 이름 배열을 반환합니다.
저는 위에서 언급하지 않은 이것이 좋습니다.
require 'pathname'
Pathname.new('/my/dir').children.each do |path|
puts path
end
문자열 대신 경로 이름 개체를 사용하여 유용한 작업을 수행하고 추가로 이동할 수 있다는 이점이 있습니다.
Dir.new('/my/dir').each do |name|
...
end
언급URL : https://stackoverflow.com/questions/2512254/iterate-through-every-file-in-one-directory
'codememo' 카테고리의 다른 글
| Angular 6 - browser-crypto.js:3 Uncaught ReferenceError: global이 정의되지 않았습니다. (0) | 2023.07.02 |
|---|---|
| SQL Developer가 테이블을 나타내는 연결 아래에 테이블이 표시되지 않습니다. (0) | 2023.07.02 |
| Vuex, vuejs - 선택 요소 옵션에서 예상대로 바인딩되지 않음 (0) | 2023.07.02 |
| xlrd로 Excel 파일 읽기 (0) | 2023.07.02 |
| 키클록 - 영역 간에 공통 사용자 집합을 공유할 수 있습니까? (0) | 2023.07.02 |