У меня есть много файлов с "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...
В ваших именах файлов примеров не содержится «example.com» в имени файла. Вы пытаетесь заменить текст в содержимом файлов? В этом случае вы захотите использовать
—
Баочан
sed
команду вместо rename
.
Ваш вопрос противоречив. Вы говорите, что вам нужно изменить example.com в файлах, но затем приведите пример для изменения имен файлов. Затем, в довершение, вы приводите примеры имен файлов, которые никоим образом не связаны с example.com и являются двоичными файлами .mp4. Здесь не что-то не так, все не так. На этот вопрос нет ответа.
—
Тимбо
Правильно спроектированный веб-сайт будет содержать относительные ссылки в HTML-файлах, поэтому эта проблема полностью исключена. Вы уверены, что в HTML закодированы fqdn? Или это предположение?
—
Тимбо
Глядя на текст использования, я уверен, что @baochan верен в вашей версии
—
AFH
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 '{}' \;
xargs -I '{}' rename "com" "co" '{}'
. Хотя это может быть слишком широким, поскольку он поймает любой экземпляр «com». Если Perl установлен, вы можетеprename
вместо этого использовать его в качестве версии регулярного выражения.