유지하려는 작은 파일 세트를 제외하고 디렉토리의 모든 것을 어떻게 반복적으로 삭제할 수 있습니까? 예를 들어 f2
및 이름이 지정된 파일을 제외한 모든 파일을 삭제해 보겠습니다 f5
.
# Create a testing ground
mkdir -p d{1..3}
touch d{1..3}/f{1..5}
# Remove all files EXCEPT ones named f2 and f5.
find . -type f -not -name ('f2'|'f5') -type f -exec rm -f '{}' +
# Remove empty directories
find . -type d -empty -delete
생산:
bash: syntax error near unexpected token `('
궁극적인 목표는 더 큰 C 사용자 공간 애플리케이션 내에서 이 작업을 수행하는 것이지만 system()
명령줄 명령을 사용하는 것이 더 쉬워 보입니다.
답변1
find . -type f -not \( -name f2 -o -name f5 \) -delete
그것은 이루어져야합니다.
-delete
동일 -exec rm -f '{}' +
하지만 더 짧고 더 효율적입니다. 그러나 실제로 삭제하려는 파일만 가져오는지 확인하려면 먼저 이를 실행하지 않고 실행하세요.