.picasa.ini가 디렉토리의 유일한 파일인 경우 디렉토리와 파일을 어떻게 삭제합니까?

.picasa.ini가 디렉토리의 유일한 파일인 경우 디렉토리와 파일을 어떻게 삭제합니까?

루트 디렉터리에서 시작하여 트리를 재귀적으로 탐색하고 싶습니다. 디렉터리에 .picasa.ini라는 파일이 하나만 있는 경우 해당 디렉터리와 파일을 삭제하고 싶습니다.

Find 명령으로 복잡한 검색을 많이 할 수 있는 것처럼 보이지만 이러한 유형의 조건을 기반으로 뭔가를 수행하는 것이 가능한지는 모르겠습니다.

저는 Windows 컴퓨터를 사용하고 있지만 다양한 명령줄 도구를 제공하는 cygwin에 액세스할 수 있습니다.

답변1

find단일 명령으로 수행 할 수 있는지는 확실하지 않지만 간단한 bash 스크립트를 사용하면 확실히 수행할 수 있습니다. 방금 Cygwin에서 이것을 테스트했는데 예상대로 작동합니다. ROOT_DIR이 검색을 수행하려는 파일 시스템의 루트 디렉터리로 변경해야 합니다 (예: /cygdrive/d/D 드라이브 검색).

일반적인 아이디어는 다음과 같습니다. .picasa.ini트리에서 이름이 지정된 모든 파일을 찾습니다. 각 파일에 대해 해당 디렉터리를 살펴보고 다른 파일이 있는지 확인하세요. 그렇지 않은 경우 디렉터리를 삭제합니다. (둘러싸는 큰따옴표는 $dir공백이 포함된 디렉터리를 제거합니다.) 그렇지 않으면 계속합니다.

#!/bin/bash

ROOT_DIR=/

find "$ROOT_DIR" -type f -name '.picasa.ini' | while read file; do
    dir=$(dirname "$file")
    filecount=$(ls -1A "$dir" | wc -l)
    if (( filecount == 1 )); then
            rm -rv "$dir"
    fi
done

관련 정보