В bash
, dash
, zsh
и, возможно, других оболочках с расширением параметров и предполагая, что только каталоги заканчиваются суффиксом -v4
, вы могли бы сделать:
for i in *-v4; do mv "$i" "${i%-v4}"; done
Вы могли бы немного подправить команду, но мне кажется, что она уже достаточно точна. Я бы более точно сопоставил имя файла, чтобы уменьшить потенциальные несоответствия, и я бы удостоверился, что каждый PID-кандидат на самом деле был числовым,
lsof | awk -v p='^/home/testing/scripts/' '$9~p && $2+0 {print $2}' | sort -u | xargs echo kill
Обратите внимание на ^
в начале назначения каталога переменной awk
p
. Вы также должны экранировать символы, которые могут быть интерпретированы как часть регулярного выражения (, то есть .
должны быть представлены как \.
, *
как \*
и т. д.)
Удалите echo
, когда будете готовы к тому, чтобы сценарий действительно выполнил операцию уничтожения.