Я пытаюсь написать этот сценарий оболочки для создания в родительском каталоге копии папок, найденных в текущем каталоге. Пока я написал это:

for folder in *; do

    mkdir ../$folder;
done

Я хотел бы выполнить операцию "найти и заменить" для имени папки, чтобы, например, папка с именем graphics-HD стала копироваться как graphics-SD

Извините, если это упрощенно, но я абсолютно не знаком с сценарием оболочки / Unix.

Большое спасибо! J.

2 ответа2

2

Добавление косой черты в подстановочный знак ограничивает вывод в каталогах

for dir in */; do ...

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

newname=${dir/%-HD/-SD}
1

нет ничего плохого в том, что у вас есть, за исключением того, что он сделает папки из файлов, а также папок. Вы можете проверить, что каждая папка является каталогом с [-d $ folder], или использовать find. Из папки, где у вас есть папки, которые вы хотите скопировать:

find -type d -maxdepth 1 -exec mkdir "../{}" \+ 

Для поиска и замены существует переименование из rename.berlios.de. Вы можете переименовать все папки где-то так:

renamexm -s/-HD/-SD/ `find . -type d -maxdepth 1`

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