이름에 문자열이 포함된 디렉터리의 모든 파일을 (재귀적으로) 삭제하려고 합니다. 궁극적으로 저는 이렇게 하고 싶습니다.
find . -type f -name '*.m3d*' -delete
하지만 삭제를 실행하기 전에 다음 내용이 포함된 모든 파일이 있는지 테스트합니다.
find . -type f -name '*.m3d*'
그러나 이렇게 하면 불완전한 목록이 반환됩니다.
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d
전체 목록은 다음을 통해 볼 수 있습니다.
find . | grep m3d
./Result/e-field (f=15)_1,1_m3d.rex
./Result/h-field (f=15)_1,1.m3d
./Result/e-field (f=15)_1,1.m3d
./Result/h-field (f=15)_2,1_m3d.rex
./Result/e-field (f=15)_2,1_m3d.rex
./Result/h-field (f=15)_2,1.m3d
./Result/e-field (f=15)_2,1.m3d
find에 대한 매뉴얼 페이지를 읽었는데 처음 시도에서 했던 것처럼 문자열 끝에 와일드카드를 사용할 수 없다고 나와 있습니다. 내 문자열을 포함하지만 반드시 이름 끝에 올 필요는 없는 모든 파일을 삭제하는 좋은 방법은 무엇입니까?
답변1
현재 사용 중인 버전이 무엇인지 잘 모르겠지만 find
문자열 끝에서 와일드카드가 작동하지 않는다는 언급을 찾을 수 없습니다.
문제는 파일 이름이 지정되는 방식인 것 같습니다. 검색에 표시되지 않는 파일은 문자열 앞에 점( )이 없고 *.m3d*
밑줄( )이 있으므로 지정된 기준에 일치하지 않습니다..
m3d
_
find
이 명령은 find . -type f -name '*m3d*'
주어진 예제에서 이러한 파일을 모두 찾을 수 있어야 합니다.