У меня есть около 50 000 изображений в папке (я использую Mac OSX), и я хотел бы удалить все из них, если в них нет x300 или 300x . Я надеялся, что это возможно, используя терминал или автомат, но понятия не имею, как это сделать!

Спасибо!

1 ответ1

0

С терминалом есть много способов сделать это. Одним из вариантов является использование find(1):

find /your/dir -type f \! -name 'x300' \! -name '300x' -exec echo rm -f {} \;

Замените /your/dir на место, где лежат ваши файлы. Как только вы абсолютно уверены, что команда find касается только тех файлов, которые вы действительно хотите удалить с помощью rm, удалите "echo" из exec-part и повторите, чтобы фактически удалить файлы, вместо того, чтобы распечатывать, какие файлы будут удалены.

Некоторые объяснения:
find /your /dir находит все файлы и папки в /your /diir и ниже.
-type f фильтрует только файлы
-name фильтр x300 только для вещей, содержащих x300 в имени файла.
! полностью изменяет это (таким образом только файлы, НЕ содержащие).

-exec выполняет команду. Вы можете выполнить echo или -print их.
Вы можете использовать rm как команду для удаления или -delete для использования поиска.

{} - текущее имя файла. Если вы используете \; тогда {} будет заменено одним именем файла за раз. (поэтому, если у вас есть 10000 файлов для удаления, он запустит новый 10000 раз).

Вы также можете заменить это на + чтобы получить много файлов за один раз (хотя -delete еще более эффективен).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .