수학을 사용하여 문자열 목록 필터링

수학을 사용하여 문자열 목록 필터링

다음과 같은 파일이 나열된 디렉토리가 있습니다.

abc201303130110.txt
abc201303140511.txt
abc201303150112.txt

보시다시피 파일 이름에는 날짜 타임스탬프가 포함되어 있습니다. 201303140000파일 이름에 해당 값 이상이 있는 모든 파일을 반환하고 싶습니다 .

grep을 사용하여 파일 이름의 날짜/시간 부분을 가져올 수 있지만 X > 201303140000.

답변1

awkGNU 라면 awk간단히 다음을 사용할 수 있습니다:

find . -type f | awk '{ match($0, /2013[0-9]+/,arr)}  arr[0] >= 201303140000 '

답변2

Perl이 구출하러 옵니다! Perl의 -n스위치는 다소 유사하게 작동하며 sed -nPerl은 일치 및 산술 측면에서 더 강력합니다.

dennis@lightning:/tmp/foo$ ls -1
abc201303130110.txt
abc201303140511.txt
abc201303150112.txt
dennis@lightning:/tmp/foo$ ls | perl -ne '$d=$_; $d =~ s/.*?(\d+).*/\1/s; print if $d >= 201303140000'
abc201303140511.txt
abc201303150112.txt

답변3

그리고 zsh:

print -rl abc<201303140000->.txt

관련 정보