Я хочу написать bash-скрипт, который (рекурсивно) обрабатывает все файлы определенного типа.
Я знаю, что могу получить соответствующий список файлов, используя find таким образом:
найти. -имя "* .ext"
Я хочу использовать это в сценарии:
- рекурсивный список файлов с заданным расширением
- получить полный путь к файлу
- передать полный путь к другому сценарию
- Проверьте код возврата из скрипта. Если не ноль, введите имя файла, который не удалось обработать.
Моя первая попытка выглядит (псевдокод) так:
ROOT_DIR = ~/work/projects
cd $ROOT_DIR
for f in `find . -name "*.ext"`
do
#need to lop off leading './' from filename, but I havent worked out how to use
#cut yet
newname = `echo $f | cut -c 3
filename = "$ROOT_DIR/$newname"
retcode = ./some_other_script $filename
if $retcode ne 0
logError("Failed to process file: $filename")
done
Это моя первая попытка написания bash-скрипта, поэтому приведенный выше фрагмент вряд ли запустится. Надеюсь, что логика того, что я пытаюсь сделать, достаточно ясна, и кто-то может показать, как соединить точки и преобразовать приведенный выше псевдокод в рабочий скрипт.
Я работаю в Ubuntu