해당 파일 확장자가 없는 모든 파일을 삭제합니다.

해당 파일 확장자가 없는 모든 파일을 삭제합니다.

내 목표는 특별한 조건이 충족되면 일부 파일을 삭제하는 Linux 명령 시퀀스를 찾는 것입니다.

동일한 이름이지만 확장자를 가진 파일이 없거나 현재 디렉터리에 있는 경우 해당 확장자를 가진 파일 .cut또는 현재 디렉터리에 있는 모든 파일을 삭제해야 합니다..cut.bak.rec.mpg

배경: 저는 녹화된 프로그램을 잘라낼 수 있는 Linux 기반 PVR용 도구를 개발 중입니다. 각 레코드(확장자 .rec또는 .mpg)에 대해 세그먼트 태그는 .cut동일한 이름의 파일에 저장됩니다. 일부 녹음이 이동/이름 변경/삭제되면 해당 잘라낸 파일은 분리된 상태로 유지되므로 삭제해야 합니다. 쓸모없는 컷 파일을 삭제하기 위해 C로 구현했습니다. 그런데 (간단한) 시스템 기반 솔루션이 있는지 궁금합니다. 이 경우 "시스템"을 통해 백그라운드에서 실행될 수 있으므로 내 앱의 반응성이 향상됩니다.

나는 재귀 사례에 대해 비슷한 질문을 했습니다(하위 디렉토리도 검색함).여기. kos는 이미 (거의) 완벽한 답변을 주었습니다. 하지만 불행히도 너무 많은 파일을 삭제하여 사용할 수 없고 이해할 수 없습니다... 하지만 'ls'의 결과가 다음과 같은 경우 여기에서도 동일한 아이디어를 사용할 수 있습니다. 한 줄씩 구문 분석하고 전송합니다.

답변1

이와 같이?

for f in *.cut *.cut.bak
do
    [ -e "$f" ] || continue
    f="${f%%.bak}"
    f="${f%%.cut}"
    [ -e "$f".mpg ] || [ -e "$f".rec ] || rm -i -- "$f".cut "$f".cut.bak
done

관련 정보