Выдержка из документации Debiansystemd
Показать состояние службы «пример 1»:
systemctl status example1
Разрешает запуск "example1" при загрузке:
systemctl enable example1
Отключите "example1", чтобы он не запускался во время загрузки:
systemctl disable example1
Пример запуска службы 1
systemctl start example1
Одинарные кавычки прекратят расширение. И {}, возможно, потребуется экранировать. Вместо этого сделайте это:
find. -type f -name 'botrytis_cinerea_T12345.*' -exec rename "s/botrytis_cinerea_T12345/$i/g" \{\} \;
Существуют две распространенные rename
команды с разным синтаксисом. Вы используете сценарий, написанный для версии, которая принимает выражение Perl :
rename s/expression/replacement/g file...
Но тот, который вы установили, принимает как регулярное выражение, так и строку замены, как следует из сообщения об ошибке, которое вы видели:
rename [options] expression replacement file...
(Считайте себя удачливым или умным, если вы использовали \;
вместо +
. )Это можно исправить, изменив команду find
:
find. -type f -name 'botrytis_cinerea_T12345.*' -exec rename botrytis_cinerea_T12345 "$i" {} \;
Как отметил Кусалананда в комментариях, вы также cd
находитесь внутри цикла, но никогда не возвращаетесь в исходный каталог, поэтому на каждой итерации после первой вы неоднократно пытаетесь cd
перейти в каталог, который не существует. Вы можете попытаться исправить это, выполнив еще один cd
после find
, но я, вероятно, постараюсь избежать этого, отрегулировав сам find
:
for i in L*; do
find "$i" -type f -name 'botrytis_cinerea_T12345.*' -exec rename botrytis_cinerea_T12345 "$i" {} \;
done