파일 이름 fcrjlog-11-21-2019-1.txt
이 다음 형식인 폴더의 모든 파일을 삭제해야 합니다. 폴더에 있는 해당 파일 이름을 가진 파일을 모두 삭제하고 싶습니다.
답변1
find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete
( -delete
비표준 확장을 지원하지 않는 경우 로 바꾸십시오).-exec rm -f {} +
find
-delete
?
다음을 나타내는 와일드카드 연산자입니다.임의의 단일 문자. [[:digit:]]
일치하는 십진수 문자(0123456789) 로만 대체되었습니다 .
! -type d
파일 유형 제외목차( -delete
비어 있지 않으면 제거할 수 없음) -type f
더 제한적인 것으로 바꿀 수 있습니다(다음만 포함).정기적인파일(심볼릭 링크, 디렉터리, 소켓, fifo, 장치 등을 포함한 다른 모든 유형의 파일 제외) GNU는 find
또한 -xtype f
다음과 같이 식별된 파일 선택을 지원합니다.정기적인심볼릭 링크가 해결된 후.
원하는 수의 문자, 비어 있지 않은 문자의 시퀀스 또는 첫 번째 문자가 아닌 비어 있지 않은 문자의 시퀀스 (숨겨진 파일 제외) 와 일치하는 항목 fcrjlog
으로 바꿉니다 .*
?*
[!.]*
.
답변2
일반적으로 이미 시도한 내용이 표시됩니다. 이렇게 하면 더 많은 응답을 얻을 수 있습니다. 이 문제를 풀려면 정규식을 찾아보고 몇 가지 개념을 이해해야 합니다. 타임스탬프의 "x"가 숫자라고 가정합니까? 그렇다면 다음 정규식을 사용하여 시작할 수 있습니다.
/tmp>ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$"
test-12-12-1234-9.txt
/tmp>rm $(ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$")
부품을 분해하십시오.
"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{4} -- Exactly four numeric characters
- -- A literal dash "-"
[0-9] -- One numeric character
. -- Any character. Use \. to insist on a dot
txt -- The literal string "txt"
$ -- An anchor that means the txt has to be at the end of the line
"