Как найти все файлы в папке рекурсивно по определенному имени и переименовать их?

У меня есть дерево папок. Некоторые из них содержат файл с именем «.file.php». Как мне рекурсивно переименовать все файлы с этим именем в дереве в «.file1.php»? Я на сервере Debian.

2
задан 5 April 2011 в 16:00

2 ответа

Вы имеете rename на debian? idk, но так как это доступно на человечности, наверное.

ИМЯ переименовывает - переименовывает несколько файлов

РЕЗЮМЕ переименовывает [-v] [-n] [-f] perlexpr [файлы]

ОПИСАНИЕ "переименовывает", переименовывает имена файлов, предоставленные согласно правилу, указанному как первый аргумент. perlexpr аргументом является выражение Perl, которое, как ожидают, изменит $ _ строка в Perl для по крайней мере некоторых указанных имен файлов. Если данное имя файла не будет изменено выражением, то оно не будет переименовано. Если никакие имена файлов не будут даны на командной строке, то имена файлов будут считаны через стандартный вход.

   For example, to rename all files matching "*.bak" to strip the
   extension, you might say

           rename 's/\.bak$//' *.bak

   To translate uppercase names to lower, you'd use

           rename 'y/A-Z/a-z/' *

пример, скопированный с результата Google, мог бы быть уже вполне близко к тому, что Вы хотите:

Вот пример переименовать команды:

переименуйте-n ’s/.htm$/.html /’ *.htm

-n означает, что это - тестовый прогон и на самом деле не изменит файлов. Это покажет Вам список файлов, которые были бы переименованы, если бы Вы удалили-n. В случае выше, это преобразует все файлы в текущем каталоге от расширения файла .htm к .html.

Если бы вывод вышеупомянутого тестового прогона смотрел хорошо затем, то Вы могли бы выполнить окончательную версию:

переименуйте-v ’s/.htm$/.html /’ *.htm

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

0
ответ дан 5 April 2011 в 16:00

Полное решение будет выглядеть следующим образом

find -name '*.file.php' -exec rename 's/\.file\.php$/.file1.php/' {} \;
0
ответ дан 5 April 2011 в 16:00

Другие вопросы по тегам:

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