이것은 조건이 첨부된 수정하려는 명령입니다.
find /home/user/backups/ -mindepth 2 -maxdepth 3 -name "*~EEEE000.tif" -print
이것은 다음의 출력입니다 ls /home/user/backups/
.
backup20170101_somerandomstring
backup20170115_somerandomstring
backup20170230_somerandomstring
backup20170305_somerandomstring
backup20170408_somerandomstring
backup20170521_somerandomstring
.
.
.
backup20190111_somerandomstring
backup20190130_somerandomstring
backup20190209_somerandomstring
backup20190301_somerandomstring
backup20190303_somerandomstring
backup20190311_somerandomstring
backup20190313_somerandomstring
backup20190412_somerandomstring
.
.
.
backup20200102_somerandomstring
backup20200103_somerandomstring
backup20200105_somerandomstring
backup20200110_somerandomstring
.
.
.
2019-03-10 이후에 생성된 디렉토리만 검색하고 싶습니다. 그러므로 이는 다음과 같이 쉽게 이해될 수 있다.목차 이름에 있는 숫자가 20190310
단어 뒤의 숫자 보다 큽니다.backup
.
생각할 수는 있지만 seq
find와 함께 사용하는 방법을 모르겠습니다. 더 나은 옵션이 있다고 확신합니다.
seq -f "backup%1.0f" 20190310 20200131
답변1
zsh
셸을 사용하면 파일 이름 와일드카드 패턴이 <n-m>
숫자 범위 n
( m
포함)와 일치합니다.
무늬
/home/user/backups/backup<20190311->_*
/home/user/backups
문자열로 시작 backup
하고 그 뒤에 20190311
같거나 그보다 큰 숫자, 밑줄 및 가능한 경우 더 많은 문자가 오는 모든 이름 과 일치합니다 .
디렉터리만 일치:
/home/user/backups/backup<20190311->_*(/)
원래 find
명령과 함께 이것을 사용하십시오.
find /home/user/backups/backup<20190311->_*(/) \
-mindepth 1 -maxdepth 2 -name "*~EEEE000.tif" -print
이는 glob과 일치하는 모든 디렉토리에서 ~EEEE000.tif
(특정 디렉토리 깊이에서)로 끝나는 파일 또는 디렉토리의 이름을 검색합니다. 찾은 경로 이름을 인쇄합니다. 검색 경로 루트의 추가 깊이를 고려하여 검색 깊이가 조정되었습니다.
None find
, 일반 파일의 이름만 인쇄합니다.
print -rC1 -- \
/home/user/backups/backup<20190311->_*/*'~EEEE000.tif'(.ND) \
/home/user/backups/backup<20190311->_*/*/*'~EEEE000.tif'(.ND)
그러면 경로에 있는 디렉터리에 대한 기호 링크도 확인됩니다.