Скрипт Bash для поиска файла в дереве каталогов и добавления его к другому файлу

Название более упрощено, чем функциональность, которую я пытаюсь выразить в сценарии.

У меня есть одноуровневое глубокое дерево каталогов (намного больше, чем в примере), которое содержит различный контент, хотя меня интересуют только два конкретных файла. Файл с именем «текущий» и другой с именем «ревизии».

- foo
   |
   |-> current

- bar
   |
   |-> current
   |-> revisions

- baz
   |
   |-> not-affected

Имеющийся в виду сценарий будет запущен из родительского каталога в foo/bar/baz и будет выполнять следующие действия.

  1. Сканировать все подкаталоги
  2. Когда он находит каталог, содержащий «текущий», он будет

    1. Append the content of 'current' onto revisions 'cat ${pwd}/current >> ${pwd}/revisions '
  3. Каталоги, не содержащие файл с именем «текущий», должны оставаться незатронутыми.

person j pimmel    schedule 27.03.2009    source источник


Ответы (2)


Если это один уровень в глубину, это должно работать:

for c in */current; do cat ${c} >> ${c%%current}revisions; done
person David Z    schedule 28.03.2009

for i in */current; do
  cat "${i}" >> "{i%/*}/revisions"
done

Обратите внимание, что это создаст ревизии, если он не существует.

person brian-brazil    schedule 28.03.2009