Ruby로 파일 시스템을 탐색할 수 있다는 사실을 알고 계셨습니까?
Ruby "Dir" 클래스와 함께.
디렉토리 항목을 나열하고 현재 디렉토리를 변경하며 새 폴더를 만들 수도 있습니다!
예시 :
filenames = Dir.entries(".")
이 entries
메서드는 파일 이름 항목의 배열을 반환합니다. 모든 항목은 문자열이므로 이 파일을 실제로 읽으려면 Ruby File 클래스와 결합해야 합니다.
Btw, 이 점(.
)는 현재 디렉토리를 나타냅니다. .
이것은 코드를 실행할 때 (터미널에 있는) 디렉토리가 아니라 코드가 실행되는 디렉토리입니다.
그 때문에…
Dir.pwd
를 사용하여 현재 디렉토리를 확인하는 것이 도움이 될 수 있습니다. 방법.
지금 :
Dir
사용법을 알아봅시다. 새 디렉토리를 만드는 클래스(mkdir
), 이름을 바꿉니다(mv
). ), 특정 패턴(glob
)을 따르는 파일 이름을 찾습니다. ).
Ruby의 Mkdir 메소드를 사용하여 새 디렉토리 생성
Ruby로 새 폴더를 만들려면 Dir.mkdir
을 사용할 수 있습니다. 방법.
예 :
Dir.mkdir("testing")
상대 경로가 주어지면 이 디렉토리는 현재 경로(Dir.pwd
).
몇 가지 오류가 발생할 수 있습니다. :
- 디렉토리가 이미 있습니다(
Errno::EEXIST
). ) - 권한 거부됨(
Errno::EACCES
) - 아직 존재하지 않는 다른 폴더 아래에 폴더를 만들려고 합니다(
Errno::ENOENT
)
마지막 오류는 일반적으로 중첩된 디렉터리를 만들려고 할 때 발생합니다.
또는 존재하지 않는 절대 경로를 사용하는 경우.
두 가지 솔루션 :
- 디렉토리를 생성하기 전에 디렉토리가 존재하는지 확인하십시오(
Dir.exists?
포함). ) - 고급 수업 사용(다음 섹션)
계속 배워봅시다!
FileUtils 모듈을 사용한 고급 작업
추가 마력이 필요한 경우 FileUtils
를 가져올 수 있습니다. 표준 라이브러리의 모듈입니다.
여기에는 mkdir_p
와 같은 메소드가 포함됩니다. 중첩 디렉토리를 한 번에 생성합니다.
예시 :
require 'fileutils' FileUtils.mkdir_p("/tmp/testing/a/b")
꽤 멋지죠?
그게 다가 아닙니다. FileUtils
또한 키워드 인수의 형태로 모든 파일 작업에 대한 추가 옵션을 제공합니다. verbose
처럼 옵션(Linux 명령 인쇄) 및 noop
(파일을 변경하지 마십시오) 옵션.
시도해 보세요!
디렉토리 이름을 바꾸는 방법
Ruby를 사용하면 운영 체제 사용자 인터페이스 또는 터미널에서 수행할 수 있는 모든 작업을 수행할 수 있습니다.
예를 들어...
다음과 같이 디렉토리 이름을 바꿀 수 있습니다. :
FileUtils.mv("/tmp/a", "/tmp/b")
FileUtils
도 사용해야 합니다. 여기 mv
때문에 Dir
에서는 사용할 수 없습니다. 수업.
현재 디렉토리를 변경하는 방법
모든 디렉토리 작업은 현재 디렉토리에서 실행되므로 변경하는 것이 좋습니다.
Dir.chdir
을 사용할 수 있습니다. 방법입니다.
예 :
Dir.chdir("/tmp") { Dir.entries(".") }
이것은 두 가지 방식으로 작동합니다. :
- 블록을 사용하면 현재 디렉토리가 블록 내부의 코드에 대해서만 변경됩니다.
- 블록이 없으면 메서드 호출 후 모든 코드에 대해 변경됩니다.
chdir
Ruby 프로세스 내에서만 작동하며 "외부 세계"에는 영향을 미치지 않습니다.
즉...
Ruby 프로그램 실행이 중지된 후에도 쉘의 작업 디렉토리는 변경되지 않습니다.
패턴 일치로 파일 및 디렉토리 나열
폴더에 있는 모든 Ruby 파일을 찾고 싶으신가요? glob
으로 쉬운 작업 방법!
예 :
Dir.glob("*.rb")
".txt" 또는 ".yml"과 같이 원하는 다른 확장자를 사용할 수 있습니다. 또는 파일 이름의 일부인 다른 텍스트.
모든 폴더에서 파일을 찾고 싶으신가요?
예, 가능합니다.
Dir.glob("**/*.rb")
결과는 상대 경로를 포함하여 모든 파일 이름이 있는 배열입니다. File.basename
을 사용하여 경로를 제거하고 파일 이름만 가져올 수 있습니다. glob
에서 가져온 목록의 모든 파일에 대한 메소드 .
요약
Dir
를 사용하여 Ruby에서 디렉토리로 작업하는 방법을 배웠습니다. &FileUtils
수업.
이제 여러분이 이것을 실천할 차례입니다.
읽어 주셔서 감사합니다! 🙂