2012-05-07 2 views
-2

임 3 문자로 시작하는 모든 파일을 선택할 수있는 Windows 쉘 명령을 찾으려고합니다. 000world 111foo 121bar첫 번째 문자가 같은 파일 찾기

000hello 명령은 나에게 처음 두 파일을 얻을 것입니다 : 그래서 예를 들어 디렉토리는 다음이 있다면. 이 일을 할 수있는 방법이 있습니까?

+3

Windows 쉘 또는 Bash? 그들은 동일하지 않습니다. 원하는 것을하기위한 기술이 크게 다르므로 적절하게 태그가 달린 두 개의 질문을 게시해야합니다. –

+0

태그를/powershell 태그로 cmd를 추가하십시오. – tuxnani

답변

0

사용 bash는 오른쪽

$ echo 000* 
+0

"glob"는 문서에서 사용 된 용어입니다. – jordanm

0

Windows 명령 행에서 와일드 카드?

dir 000* 

*

은 파일 이름에 모든 문자와 일치하는 와일드 카드 문자입니다

? 당신의 새로운 정보를 기반으로 파일 이름

에 단일 문자와 일치하는 와일드 카드 문자 :

for /f %i in ('dir /b 000*') do (
    echo %i is the name of the file we found 
    type %i 
) 

배치 파일 인 경우 %%i을 사용하십시오.

현재 작업 디렉토리에 있어야한다고 가정합니다. 디렉토리 트리를 하위 디렉토리로 이동하려면 for /r을 사용하십시오.

+0

그는'bash'' shell'' script'로 자신의 질문에 태그를 붙였습니다. 그는 Cygwin을 사용해야 만합니다. 나는 그것이 tho를 혼란스럽게한다는 것에 동의한다. – KurzedMetal

+0

@KurzedMetal 네. 나는 그것을 보았다. 그리고 나는 또한 혼란 스럽다. – Marc

+0

문제는 000으로 모든 파일을 선택하고 일부 작업을 수행 한 다음 111과 같은 파일 이름을 가진 다른 파일이있는 경우 동일한 작업을 수행하는 등의 작업입니다. 그래서 나는 디렉토리에있는 것을 미리 모른다. 난 그냥 하나씩 동일한 접두사를 가진 파일 그룹을 선택하고 그들에게 어떤 작업을 수행하십시오. –

0

Windows에 태그가 지정되어 있으므로 원하는 솔루션 유형이 명확하지 않지만 Ruby를 사용하는 것이 가능한 경우이 방법이 유용 할 수 있습니다.

# create a hash of arrays where the hash value is the first three letters of the 
# file name and the value is an array of those entries. 
h = Hash.new{|h,k| h[k] = []} 
Dir.foreach(".") { |f| h[f[0..2]] << f } 

# then print/use the ones that have multiple entries 
h.each_key { |k| puts h[k] if h[k].length > 1 } 
관련 문제