У меня есть около 50 000 изображений в папке (я использую Mac OSX), и я хотел бы удалить все из них, если в них нет x300 или 300x . Я надеялся, что это возможно, используя терминал или автомат, но понятия не имею, как это сделать!
Спасибо!
С терминалом есть много способов сделать это. Одним из вариантов является использование 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 еще более эффективен).