2011-09-21 5 views
0

시작하는 모든 디렉토리를 나열하고 싶습니다. 현재 디렉토리에서. 이전 디렉토리 (..)가 나열되지 않도록하려면 정규 표현식을 이와 같이 지정해야합니다. 내가 사용하고glob in solaris csh

ls .[^.]* 

그것은 UNIX 변종 플랫폼에서 잘 작동하지만, 솔라리스, 나는 여전히 CSH를 사용하고 있지만, 그것은 나에게 단지 .. 디렉토리를 나열 CSH. Solaris의 정확한 기능을 가진 정규 표현식을 어떻게 지정할 수 있습니까? 그것은 bash에서 작동하지만 우리 조직의 각 SOLARIS 상자에서 사용할 수 있도록 보장되기 때문에 csh 만 사용해야합니다.

+0

http://www.grymoire.com/Unix/CshTop10.txt HTH. 나는 왜 bourne shell이 ​​모든 solaris box에 있지 않을지 상상할 수 없다. –

+1

Solaris 9에서 확인했습니다. 대신'tcsh'를 사용하는 것이 좋지만 bash를 믿을 수 없다면 tcsh를 기대할 수 없습니다. 덧붙여 말하자면, 정규 표현식이 아닌 파일 매칭 패턴입니다. ** gre는 너무 짧습니다 ** 제안 된, 당신의 최선의 방법입니다. –

답변

2

/bin/sh과 같이 할 수 있지만 구문은 약간 다릅니다. 이 파일 일치 패턴 (A 글로브)이 아닌 정규 표현식입니다

ls .[!.]* 

참고 :이 문자 집합을 부정하는 !보다는 ^를 사용합니다.

그러나 다양한 셸에서 지원되는 glob 구문에서 볼 수있는 변형을 고려하면 grep을 실제 정규 표현식으로 사용하는 것이 더 나을 것입니다.

1

csh? 와우, 나는 그들이 아직도 그것을 만들었다는 것을 알지 못했다 :) 당신의 ls .[^.]*은 OSX의 csh에서 작동하므로 솔라리스 csh으로 어떤 일이 벌어지고 있는지 모른다. ls에 대한

ls `ls -a | grep '^\.[^.].*'` 

-a가 모두 목록에있는 점 파일과 다음 점을 다루는 grep의 비트를 포함하도록 지시하십시오 crufty 백업은 다음과 같이 될 것이다. 이는 OSX의 csh에서 ls .[^.]*이하는 것과 일치합니다. 솔라리스에서도 잘 작동합니다. 부정을 지원하지 않는 CSH의 globs와의

0

문자 클래스 ... 솔라리스에서 man 페이지에서

:

[...] Match any single character in the enclosed list(s) or 
     range(s). A list is a string of characters. A range 
     is two characters separated by a dash (-), and 
     includes all the characters in between in the ASCII 
     collating sequence (see ascii(5)). 

그래서 ... 당신은 범위를 포함하는 문자 클래스를 만들 수 있습니다 에서 \ 040 (공간)에 '-' '.'. 이전, 다음에서 '/' '~'로 (문자 (나머지 인쇄 가능한 ASCII 문자)

ls -a .[\ --/-~]* 

이 나를 위해 작동하는 것 같다,하지만 출력을 확인하지 않았습니다. 뾰족한 톱니가있다.