2014-12-05 6 views
1

나는 커맨드 라인의 새로운 것에 대해, 현재 디렉토리와 서브 디렉토리에서 정규 표현식을 통해 특정 파일명을 가진 파일을 검색하는 방법을 고민하고있다. 그런 다음 파일을 내 명령 줄에 나열하고 싶습니다.정규식을 사용하여 파일을 찾고 나열하는 방법은 무엇입니까?

B2ctes_UCUAAwF-K-large-123x322-132x423.jpg 
this_is-a-123-file_name-3124x2445-4235x32.jpeg 
file-32x32-64x64.png 

중요한 부분은 내 시도가이처럼 보이는 -[number]x[number]-[number]x[number]

입니다 : 같은

정규식 파일과 일치해야합니다

find . -type f -regex ".+?-\d+x\d+-\d+x\d+\.\w{3,4}" -ls; 

두 가지 문제점이 함께 있습니다

  1. -ls puts는 많은 정보를 보여줍니다. 파일 이름 만 원해.
  2. 정규식이 작동하지 않습니다. 나는 .+을 사용하려고 시도했지만, 아무 것도 반환하지 않습니다.

답변

1

당신이 사용할 수있는이 findregex과 :

find . -regextype posix-extended -type f -regex ".*-[[:digit:]]+x[[:digit:]]+-[[:digit:]]+x[[:digit:]]+\.[[:alnum:]]{3,4}" 

또는에 OSX :

정규식없이

그리고

find -E . -type f -regex ".*-[[:digit:]]+x[[:digit:]]+-[[:digit:]]+x[[:digit:]]+\.[[:alnum:]]{3,4}" 
:

find . -type f -name "*-[[:digit:]]*x[[:digit:]]*-[[:digit:]]*x[[:digit:]]*.[[:alnum:]]*" 
+1

고마워, 나는 ssh를 통해 리눅스에서 첫 번째 시도와 내 OS X 컴퓨터에서 로컬로 두 번째 시도했다. 둘 다 예상대로 작동합니다. – Afterlame

+0

환영합니다. 다행입니다. – anubhava

0

무엇 단순히 약 :

find . -type f -name '-[0-9]*x[0-9]*-[0-9]*x-[0-9]*' 

또는

이 가
find . -type f -regextype posix-egrep -regex '.*-[0-9]+x[0-9]+-[0-9]+x-[0-9]+.*' 
+0

죄송합니다, 내 질문은 충분 요청하지 않은 생각합니다. 파일 이름 부분은 가변적입니다. 그것은 "B2ctes_UCUAAwF-K-large"와 같은 것일 수도 있습니다. 확장자는 .gif, .jpg, .jpeg 또는 .png 일 수 있으며 숫자는 항상 숫자이지만 길이는 가변적입니다. 나는 내 질문에 대해 다시 말해 줄 것이다. – Afterlame

+0

내 편집 된 POST 확인 –

+0

그들은 여전히 ​​작동하지 않습니다. 나는 왜 모르겠다. 어쩌면 posix-type이 나를 위해 지원되지 않을까?! – Afterlame

관련 문제