Теперь, прежде чем вы окажетесь ладонью и нажмите на дубликат записи или тому подобное, прочитайте дальше, этот вопрос является как теорией, так и практикой.с помощью поиска и переименования для их использования
Из названия довольно очевидно, что я пытаюсь сделать, найти некоторые файлы, а затем переименовать их. Ну, проблема, есть так много способов сделать это, что я, наконец, решил выбрать один и попытаться понять это, теоретически.
Позвольте мне установить сцену: Допустим, у меня есть 100 файлов все именованные как этот Image_200x200_nnn_AlphaChars.jpg, где NNN является порядкового номера и AlphaChars т.е.
Image_200x200_001_BlueHat.jpg
Image_200x200_002_RedHat.jpg
...
Image_200x200_100_MyCat.jpg
Введите этап найти. Теперь с помощью простого один лайнер я могу найти все файлы изображений в этом каталоге. (Не уверен, как сделать это без учета регистра)
find . -type f -name "*.jpg"
Введите этап переименовать. На своем собственном, переименовывать ожидают, что вы выполните следующие действия:
rename <search> <replace> <haystack>
Когда я пытаюсь объединить два с -print0 и xargs и некоторые регулярные выражения я застревают, и я почти уверен, что это потому, что переименовывать ищу стог или в поисковой часть ... (Пожалуйста, объясните, если вы понимаете, что происходит после того, как трубы)
find . -type f -name "*.jpg" -print0 | xargs -0 rename "s/Image_200x200_(\d{3})/img/"
Так что цель состоит в том, чтобы получить находку дать переименовать оригинальное название изображения , и replac е все до последнего подчеркивания с IMG
Да, я знаю, что дублирует даст проблему, и да, я знаю, что пробела в имени будут также сделать мою жизнь в ад, и даже не начинать с поддиректориями и как. Чтобы это было просто, мы говорим об одном каталоге, и все имена файлов уникальны и не имеют специальных символов.
Мне нужно понять фундаментальные основы, прежде чем попасть в хардкор. Кто-нибудь, похоже, помогает?
Для нечувствительности к регистру do '-iname' вместо' -name'. – AlG
Если вы знаете, что ваши файлы находятся в одной директории, вы можете найти «найти». 'find' идеально подходит, когда ваши целевые файлы разбросаны по иерархии каталогов, но в одном каталоге вы найдете шаблоны glob или extended-glob (http://www.gnu.org/software/bash/manual/ bashref.html # Pattern-Matching). Тогда у вас есть: 'rename 's/Image_200x200 _ (\ d {3})/img /" * .jpg –
Мне нравится упрощать, спасибо @ glenn-jackman, но это переименование поиска, очевидно, будет усложняться, Я использую find, так как следующим шагом было бы сделать именно это, рекурсивно найти и заменить файлы и переименовать их, а потом получить уродливые имена с именами или специальными символами ... но простые базовые важны для начала:) –