Если вы запустите
(cd my_utility_version_dir && exec./my_util "$OLDPWD/my_data_file")
затем
my_util
текущий рабочий каталог(.
)будетmy_utility_version_dir
my_data_file
в предыдущем рабочем каталоге -, из которого вы cd
удалили. Ищет ли он его там или нет, зависит от того, как именно my_util
работает внутри, но довольно часто он принимает путь для использования.
Вам не нужно использовать grep
или sed
. Суть процесса можно показать для одного каталога вот так:
#!/bin/bash
for op in /out/*.mp3
do
mp="${mp##/out/}" # Strip /out/ base prefix leaving relative pathname
fp="${mf%.mp3}.flac" # Convert mp3 name to flac
[[ ! -f "/in/$fp" ]] && echo rm "$op"
done
Поскольку это необходимо для дерева каталогов, вам нужно применить это к каждому каталогу по очереди:
find /out -type f -name '*.mp3' -exec bash -c '
for mp in "$0" "$@";
do
mp="${mp#/out/}";
fp="${mf%.mp3}.flac";
[[ ! -f "/in/$fp" ]] && echo rm "$op";
done
' {} +
Если ваш find
не поддерживает -exec... +
, замените +
на ';'
. В обоих случаях удалите echo
, когда будете уверены, что он удалит нужные файлы.