특정 경로에는 다음과 같은 일부 디렉터리(파일 이름으로 날짜)가 있습니다.
- 디렉토리 이름이 20180423과 같은 경우 나열되어야 합니다.
- 디렉터리 이름이 20180423-backup 또는 20180423backup과 유사한 경우 나열되지 않아야 합니다.
답변1
여기서는 이중 부정을 사용하고 싶습니다.
LC_ALL=C find . ! -name '*[!0-9]*' -type d
즉, 이름에 숫자가 아닌 숫자가 포함되지 않은 디렉토리 유형의 파일을 나열합니다.
그렇지 않은 경우 LC_ALL=C
일부 find
구현(GNU 포함)에서는 find
이름에 현재 로케일에서 유효한 문자를 형성하지 않는 바이트 시퀀스가 포함된 파일(예: répertoire
iso8859-1( mkdir $'r\xe9pertoire'
) 인코딩 파일)을 나열할 수도 있습니다.
를 사용하면 zsh
다음 작업도 수행할 수 있습니다.
print -rC1 -- **/<->(ND/)
답변2
GNU가 있는 경우 다음을 찾으세요.
find . -regex '^./[0-9]*$'
변경된 경우 정규식의 시작 부분( )을 ^./
시작 경로( )와 일치하도록 조정하세요..
답변3
두 가지 솔루션:
GNU 사용 find
:
find /particular/path -type d -regextype egrep -regex '.*/[0-9]{8}'
표준 find
:
find /particular/path -type d -name '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
/particular/path
이 명령은 이름이 8자리로 구성된 디렉토리를 찾아 해당 경로 이름을 표시합니다.
이러한 디렉토리의 내용을 보고 싶다고 "목록"으로 표시하는 경우 -exec ls {} ';'
.