2

У меня есть много файлов index.html в уникальных именованных папках (по одному на папку). Я хочу переименовать каждый файл с именем его родительской папки.

От:

/folder1/index.html
/folder2/index.html
/folder3/index.html
/folder4/index.html
/folder5/index.html

Для того, чтобы:

/folder1/folder1.html
/folder2/folder2.html
/folder3/folder3.html
/folder4/folder4.html
/folder5/folder5.html

Попытка 1

Я попытался rename -vn 's:(/[^/]*)/[^/]*$:$1$1.html:' folder/*/*.html который возвращается с:

Using expression: sub { use feature ':5.18'; s:(/[^/]*)/[^/]*$:$1$1.html: }
'folder/*/*.html' unchanged

Я не очень понимаю, что происходит, чтобы иметь возможность это исправить.

Попытка 2

Затем я попытался rename -n -v '...' folder/*/*.html , который вернулся с:

Using expression: sub { use feature ':5.18'; ... }
Unimplemented at (eval 2) line 1.

Я использую OSX с установленным переименованием .

2 ответа2

1

Это подходит для меня:

rename -vn 's/([^\/]+)\/index/$1\/$1/' folder*/*.html

Печать:

folder1/index.html renamed as folder1/folder1.html
folder2/index.html renamed as folder2/folder2.html
folder3/index.html renamed as folder3/folder3.html
folder4/index.html renamed as folder4/folder4.html
folder5/index.html renamed as folder5/folder5.html

Еще одно решение с помощью sed:

ls -1 folder*/*.html | sed 's/\([^\/]\+\)\/index.html/mv "\0" "\1\/\1.html"/'

Печать:

mv "folder1/index.html" "folder1/folder1.html"
mv "folder2/index.html" "folder2/folder2.html"
mv "folder3/index.html" "folder3/folder3.html"
mv "folder4/index.html" "folder4/folder4.html"
mv "folder5/index.html" "folder5/folder5.html"

Если это печатает правильные команды, просто передайте это bash . Но сначала убедитесь, что напечатанные команды будут работать перед выполнением:

ls -1 folder*/*.html | sed 's/\([^\/]\+\)\/index.html/mv "\0" "\1\/\1.html"/' | bash
0

Вы можете попробовать что-то вроде:

for in in `find . -name index.html -type f`
do
bname=$(dirname $i|sed 's:/::g')
mv $i $(dirname $i)/${bname}.html
done

PS это будет работать только с одним уровнем каталогов и файлов с расширением .html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .