По крайней мере, с GNU find вы можете использовать встроенный -в -printf
, например.
find. -mindepth 1 -maxdepth 1 -type d -printf '%f/\n' -o -type f -printf '%f\n'
Вы можете сделать это с помощью простого цикла for из папки с изображениями:
cd images
for f in *.jpg; do [ -f "../labels/${f%.*}.txt" ] || echo rm "$f"; done
Удалите echo
, если результат вас устраивает.
Я создал такое дерево каталогов:
.
├── images
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ └── 5.jpg
└── labels
├── 1.txt
├── 2.txt
└── 5.txt
Самый простой способ сделать это:
from os import listdir, remove
labels = listdir('labels')
images = listdir('images')
for image in images:
if '{}.{}'.format(image.split('.')[0], 'txt') not in labels:
print('Going to remove %s' % image)
remove('images/%s' % image)