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

572
Shubham Mathur

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

0 ответов на вопрос

Похожие вопросы