Рассматривали ли вы возможность использования / проверки журнала аудита? Или использовать что-то вроде sudo (которое будет регистрировать его), чтобы запустить программу? Вы даже можете подумать о том, чтобы событие системного журнала было отправлено на другой сервер, к которому у пользователя (-ей) нет доступа.
Почему бы не использовать для этого базовое имя
? Например:
for file in *mp3; do basename "$file"; done
Ваша основная проблема заключается в том, что вы пытаетесь использовать /
в качестве разделителя, когда /
также является символом, который вы будете разбирать.
Вам нужно использовать другой разделитель, например, трубу. Сопоставьте все и /
, затем используйте \(
и \)
(группы захвата), отделяя часть, которую вы хотите извлечь, и используйте \1
, выделяя эту группу:
echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'
Вы можете работать без групп захвата: просто отбрасывая все до последней /
:
echo "yourstring" | sed 's|.*/||'