![파일 이름에 타임스탬프가 있는 폴더의 모든 파일 삭제](https://rvso.com/image/164724/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%20%ED%83%80%EC%9E%84%EC%8A%A4%ED%83%AC%ED%94%84%EA%B0%80%20%EC%9E%88%EB%8A%94%20%ED%8F%B4%EB%8D%94%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%20%EC%82%AD%EC%A0%9C.png)
파일 이름에 형식이 있는 폴더의 모든 파일을 제거해야 합니다 fcrjlog-11-21-2019-1.txt
. 폴더에 이런 파일 이름을 가진 파일을 모두 제거하고 싶습니다.
답변1
find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete
( 비표준 확장을 지원하지 않는 경우 -delete
로 바꾸십시오 ).-exec rm -f {} +
find
-delete
?
다음을 의미하는 와일드카드 연산자입니다.임의의 단일 문자. [[:digit:]]
10진수 문자(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
"