Я сейчас пытаюсь извлечь и использовать имя файла результата команды поиска.
find /var/log/*/* -iname "*.log" -type f -exec echo $(basename -- {}) \;
Фактический результат:
/var/log/xyz/log1.log
/var/log/xyz/log2.log
/var/log/xyz/log3.log
/var/log/xyz/log4.log
Ожидаемый результат:
log1.log
log2.log
log3.log
log4.log
Есть ли уловка или что-то, что неправильно использует -exec
?
Когда я выполняю echo $(basename -- 'path/to/file.txt')
в bash, он возвращается правильно file.txt
дальнейшие детали:
Мне нужно использовать полный путь и имя базыв результате:
Моя полная команда выглядит следующим образом:
find /var/log/*/* -iname "*.log" -type f -exec gzip -k -f {} \; -exec gzip -t {}'.gz' \; -exec sh -c "cat {} | grep 'str' > /tmp/$(basename -- {})" \; # and more after
В этой команде я не могу извлечь имя файла и использовать его. он всегда возвращает полный путь к файлу, например /var/log/foo/bar.log