[cmd.exe]ruby로 재귀적으로 디렉토리 탐색한 패스를 peco에 건네주어 디렉토리 이동

4049 단어 루비Peco

동기 부여



peco로 재귀 디렉토리 탐색한 경로로 이동하고 싶다!



루비 스크립트



다음은 peco에게 디렉토리 목록을 전달하고 peco가 디렉토리를 토할 때까지의 스크립트입니다. 이것을 cd 어쨌든 먹어 주면 디렉토리 이동을 할 수 있을까.

directory-search.rb
def search_dir(cur_dir)
    dirs = Dir.glob(File.join(cur_dir, "*")).map { |e|
        e.force_encoding("UTF-8") if File.directory?(e)
    }.compact

    unless dirs.empty?
        $io.puts dirs
        dirs.each do |sub_dir|
            search_dir(File.join(sub_dir))
        end
    end
end

begin
    $io = IO.popen("peco.exe", "w")
    search_dir(".")
rescue
ensure
    $io.close
end

glob("**/*")로 재귀 탐색할 수 있어?



기동시 첫발이 뭔가 놀랐기 때문에. . 가능한 한 peco를 빨리 기동해, 필터링하고 있는 도중에 탐색해 주면 좋을까라고 하는 사상입니다.

배치 파일로 해라.


@echo off
dir /b /s | findstr /v /r \\\. | iconv -f CP932 -t UTF-8 | peco

라고 하는 배치 파일을 짜서 시작은 하고 있었습니다만, 이상하게 문자화한 파일이 대량에 있거나 해 iconv가 변환할 수 없고 도중에 멈추어 버리는 문제가 있어서. .

그리고, 디렉토리만 취하는 방법이 확 생각하지 못하고. 루비라면 생각하고 있다는 것이 루비로 쓴 가장 좋은 이유입니다.

디렉토리 이동을위한 배치 스크립트



directory-search.rb의 경로는 원하는 곳으로 변경해 주시면 좋을까.
@echo off

for /f "delims=" %%i in ('ruby %USERPROFILE%/directory-search.rb ^| iconv -f UTF-8 -t CP932') do (
        cd ^"%%i^"
        break
)

참고 자료


  • htps : // 기주 b. 코 m / 페코 / 페코
  • htps : // 기주 b. 코 m / 마 t / pcd
  • htps : // 기주 b. 코 m / 마 t / 코오 l ぺこ うぃんど ws
  • 좋은 웹페이지 즐겨찾기