Массовое переименование файлов, включая подкаталоги


0

У меня есть много файлов с "example.com" в них, и я хочу заменить его на "example.co", так как я изменяю свой сайт, у меня установлена ​​программа переименования на моем сервере, и у меня также есть root-доступ.

Кто-нибудь может мне помочь переименовать его.

Пример расположения файлов:

/var/html/downloads/folder1/folder1-1/abc(example.com).mp4
/var/html/downloads/folder2/folder2-1/abc(example.com).mp4
/var/html/downloads/folder2/folder2-2/abc(example.com).mp4
/var/html/downloads/folder3/folder3-1/abc(example.com).mp4

Я надеюсь, что some1 поможет мне здесь :)

PS: я использовал этот cmd, но получил ошибку ниже:

cmd: find -name "*example*" | xargs -I '{}' rename s/com/co/ '{}'

Ошибка:

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Есть две «стандартные» версии переименования Linux, более новая, которая ожидает регулярные выражения Perl, и ваша, которая, я думаю, смоделирована после более старой версии Unix, которая принимает два параметра для поиска и замены. Попробуй xargs -I '{}' rename "com" "co" '{}'. Хотя это может быть слишком широким, поскольку он поймает любой экземпляр «com». Если Perl установлен, вы можете prenameвместо этого использовать его в качестве версии регулярного выражения.
Баочан

В ваших именах файлов примеров не содержится «example.com» в имени файла. Вы пытаетесь заменить текст в содержимом файлов? В этом случае вы захотите использовать sedкоманду вместо rename.
Баочан

Ваш вопрос противоречив. Вы говорите, что вам нужно изменить example.com в файлах, но затем приведите пример для изменения имен файлов. Затем, в довершение, вы приводите примеры имен файлов, которые никоим образом не связаны с example.com и являются двоичными файлами .mp4. Здесь не что-то не так, все не так. На этот вопрос нет ответа.
Тимбо

Правильно спроектированный веб-сайт будет содержать относительные ссылки в HTML-файлах, поэтому эта проблема полностью исключена. Вы уверены, что в HTML закодированы fqdn? Или это предположение?
Тимбо

Глядя на текст использования, я уверен, что @baochan верен в вашей версии rename. Три пункта: (1) скрипт не выполнится, если есть встроенные пробелы (нужно использовать find -print0и xargs -0); (2) использование xargs -Iзапускается отдельно renameдля каждого найденного файла - гораздо эффективнее просто передать по каналу xargs -0 rename com co, который запускается renameтолько один раз, со всеми файлами в строке выполнения; (3) запускать renameодин раз для файла, который вам вообще не нужен xargs- используйтеfind -name "*example*" -exec rename com co '{}' \;
AFH
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.