하위 디렉터리가 있는 폴더가 2개 있습니다. 하나는 학습 이미지가 있고 다른 하나는 학습 라벨이 있습니다.
- 이미지는 정확히 하나의 태그에 속합니다.
- 이미지와 라벨 내용이 다릅니다.
- 이미지와 태그는 비슷한 경로에서 찾을 수 있습니다. 예를 들어:
- 그림/18/1334/image1.웹 문서
- 상표/18/1334/image1.PNG
- 파일 이름(확장자 아님)이 동일합니다.
- 하위 디렉터리에 여러 파일이 있을 수 있습니다.
해당 이미지가 없는 모든 태그를 어떻게 제거할 수 있나요(또는 그 반대의 경우도 마찬가지)? 예를 들어:
그림:
.
|---18
|---a1
| |---a1.webp
| |---a11.webp
|---a2
| |---a2.webp
|---a3
상표
.
|---18
|---a1
| |---a1.png
| |---a11.png
|---a2
| |---a2.png
|---a3
|---a3.png
좋은 해결책(해당 태그나 이미지가 없으면 파일을 삭제하세요):
.
|---18
|---a1
| |---a1.*
| |---a11.*
|---a2
| |---a2.*
|---a3
최상의 솔루션(현재 비어 있는 폴더도 삭제):
.
|---18
|---a1
| |---a1.*
| |---a11.*
|---a2
|---a2.*
별표 *는 webp 또는 png를 나타냅니다.
답변1
그리고 :find
bash
cd
and 의 상위 디렉터리로 이동하여 다음을 실행 images
합니다 labels
.
find . \( -name "*.webp" -o -name "*.png" \) -type f -exec bash -c '
if [ "${1##*.}" = "webp" ]; then
file=${1/\/images\//\/labels\/}
file=${file%webp}png
else
file=${1/\/labels\//\/images\/}
file=${file%png}webp
fi
[ ! -f "$file" ] && echo rm "{}"
' bash {} \;
echo
실제로 파일을 삭제하려면 삭제를 해야 합니다 .
빈 디렉터리를 삭제하려면 다음을 참조하세요.하위 트리에서 빈 디렉터리를 모두 제거하는 방법은 무엇입니까?.