Как удалить все файлы с определенным суффиксом перед расширением файла - PullRequest
0 голосов
/ 27 июля 2011

Мне только что передали каталог с более чем 40 000 изображений, и каталог содержит три версии каждого файла, что делает его переносом между серверами.

Я ищу способиспользование bash (OSX Terminal) для поиска и удаления (rm) всех файлов, например, с _web или _thumb в конце имени файла, непосредственно перед .jpg (или .gif, или .png, или .bmp и т. д..) расширение.

Итак, чтобы было ясно, у меня есть следующие файлы:

1.jpg
1_web.jpg
1_thumb.jpg
2.gif
2_web.gif
2_thumb.gif
etc.

И я хочу, чтобы "1.jpg", "2.gif" и т. д.остаются.

В прошлом мне удавалось переименовывать расширения, но моя командная строка-фу довольно слабая, и я в своем уме, пытаясь выяснить, что можно использовать повторно (ямне нужно будет сделать это пару раз, так как я работаю над сценарием непрерывной миграции для этого проекта).

Редактировать: После небольшой работы над этим я обнаружил несколько странных ограничений для rm иXARGS, что я должен был обойти.Я в основном адаптировал принятый ответ ниже и в итоге получил:

$ find . -name '*_thumb.*' -print0 | xargs -0 rm -f
$ find . -name '*_web.*' -print0 | xargs -0 rm -f

Теперь у меня осталось около 10000 файлов - довольно экономия с точки зрения размещения файлов в Интернете!

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Один (относительно надежный) вариант - запустить

find . -iregex ".*\(_web\|_thumb\)\.\(jpg\|png\|bmp\)" -delete

Предполагая, что у вас нет ничего, кроме файлов изображений в каталоге, другой (более простой) вариант - запустить

 rm *_web.* *_thumb.*

Предупреждение: это также приведет к удалению файлов с именем, подобным my_web.file.jpg, поэтому, если вы хотите быть в безопасности, вам нужно будет добавить все расширения, а не полагаться на них. Если вы знаете, что ваши расширения всегда будут длиной 3 символа, вы можете использовать что-то вроде * _thumb. ???

0 голосов
/ 27 июля 2011

У меня нет терминала MAC или UNIX передо мной, но я думаю, что может сработать что-то вроде следующего

rm *_web.jpg
rm *_web.jpg
rm *_thumb.gif
...