Проблема в том, что вы используете полный путь, который включает каталог. Самый простой обходной путь — сначала 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/*
Возможная причина может состоять в том, чтобы обозначить бесконечные возможности, которые могут быть отброшены после find
, и вам понадобится какой-то общий символ, который просто означал бы схождение многочисленных возможностей. Итак, {}
означает именно это.
man find
, однако не имеет упоминания о причине.