Как удалить определенную строку из имени файла? [дубликат]

Очевидно, это сделано намеренно, см. # 778357 : код выхода 0 указывает на успех или временную ошибку, все остальное указывает на постоянную ошибку.

Как указано на странице руководства apt :

ИСПОЛЬЗОВАНИЕ СКРИПТА И ОТЛИЧИЯ ОТ ДРУГИХ ИНСТРУМЕНТОВ APT

Командная строка apt (8) разработана как конечная пользовательский инструмент, и он может изменять поведение между версиями. Хотя он пытается не нарушать обратную совместимость, это также не гарантируется, если изменение кажется полезным для интерактивного использования.

Все функции apt (8) также доступны в специальных инструментах APT, таких как apt-get (8) и apt-cache (8) . . apt (8) просто изменяет значение по умолчанию некоторых параметров (см. apt.conf (5) и, в частности, двоичную область видимости). Поэтому вам следует предпочесть использовать эти команды (возможно, с некоторыми включенными дополнительными параметрами) в ваших сценариях, поскольку они максимально сохраняют обратную совместимость .

Поэтому вам не следует использовать apt в скриптах.

(Странно, что у вас есть apt в / usr / local / bin ; учитывая, что у вас установлена ​​последняя версия пакета apt , у вас, вероятно, он тоже есть в / usr / bin !)

2
23.05.2017, 15:40
1 ответ

Проблема в том, что вы используете полный путь, который включает каталог. Самый простой обходной путь — сначала cdвойти в целевой каталог, а затем запустить цикл for:

.
cd /var/lib/jenkins/bin
for file in *; do echo mv "$file" "$(echo "$file" | cut -c4-)"; done

Или, используя собственные возможности оболочки по работе со строками :

cd /var/lib/jenkins/bin
for file in *; do echo mv "$file" "${file#????}"; done

В качестве альтернативы, если у вас есть perl -rename (с именем renameв системах на базе Debian -, perl-renameв других ), вы можете:

rename -n 's|.*/...||' /var/lib/jenkins/bin/*

Убедившись, что это работает, удалите -n, чтобы действительно переименовать.


Однако, как указал Сандип в комментариях, если вы хотите удалить только 01-, удалите именно это:

rename -n 's|.*/01-||' /var/lib/jenkins/bin/*
5
27.01.2020, 21:59

Теги

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