Bash: Как заменить префикс папок - PullRequest
0 голосов
/ 17 мая 2018

У меня есть несколько папок:

test_001
test_002

, и я хотел бы заменить префикс test на ftp , чтобы получить:

ftp_001
ftp_002

Одна проблема: у меня есть доступ на Linux-сервере с минимальной установкой.Например, переименование не установлено и, вероятно, даже не установлен sed.Итак, как я могу заменить префикс с помощью чистого Bash?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Этот небольшой скрипт может помочь:

for dir in */
do
    mv "$dir" "${dir/test/ftp}"
done

выполнить его под родительским именем вашего каталога test_00x.

Он может быть записан в виде компактной однострочной:

for dir in */; do mv "$dir" "${dir/test/ftp}"; done
0 голосов
/ 17 мая 2018

Поскольку у вас минимальная установка, я попытался создать команду, которая не требует tr, sed или find.

ВХОД:

$ tree .
.
├── a
├── b
├── c
├── test_001
└── test_002

2 directories, 3 files

CMD:

for d in */; do mv "${d:0:-1}" "ftp"${d:4:-1}; done

ВЫВОД:

tree .
.
├── a
├── b
├── c
├── ftp_001
└── ftp_002

2 directories, 3 files

Пояснения по поводу substrings в bash: https://www.tldp.org/LDP/abs/html/string-manipulation.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...