Рекурсивно добавьте файл во все подкаталоги

Как я могу рекурсивно добавить (или коснуться) файл в текущий каталог, а также все подкаталоги?

Например,
Я хотел бы включить это дерево каталогов:

. ├── 1 │  ├── A │  └── B ├── 2 │  └── A └── 3 ├── A └── B └── I 9 directories, 0 files 

в

 . ├── 1 │  ├── A │  │  └── file │  ├── B │  │  └── file │  └── file ├── 2 │  ├── A │  │  └── file │  └── file ├── 3 │  ├── A │  │  └── file │  ├── B │  │  ├── file │  │  └── I │  │  └── file │  └── file └── file 9 directories, 10 files 

4 Solutions collect form web for “Рекурсивно добавьте файл во все подкаталоги”

Как насчет:

 find . -type d -exec cp file {} \; 

От man find :

  -type c File is of type c: d directory -exec command ; Execute command; All following arguments to find are taken to be arguments to the command until an argument consisting of `;' is encountered. The string `{}' is replaced by the current file 

Таким образом, команда выше найдет все каталоги и запустит cp file DIR_NAME/ на каждом из них.

Если вы просто хотите создать пустой файл, вы можете использовать touch и glob оболочки. В zsh:

 touch **/*(/e:REPLY+=/file:) 

В bash:

 shopt -s globstar for d in **/*/; do touch -- "$d/file"; done 

В переносном режиме вы можете использовать find :

 find . -type d -exec sh -c 'for d; do touch "$d/file"; done' _ {} + 

Некоторые find реализации, но не все, позволяют писать find . -type d -exec touch {}/file \; find . -type d -exec touch {}/file \;

Если вы хотите скопировать некоторый ссылочный контент, вам придется вызвать find в цикле. В zsh:

 for d in **/*(/); do cp -p reference_file "$d/file"; done 

В bash:

 shopt -s globstar for d in **/*/; do cp -p reference_file "$d/file"; done 

Портабельно:

 find . -type d -exec sh -c 'for d; do cp -p reference_file "$d/file"; done' _ {} + 

Чтобы фактически создать файл, вы можете использовать touch с find :

 $ find . -type d -exec touch {}/file \; 

Если вы хотите touch файлов с именем $ name в текущем каталоге и во всех подкаталогах, это будет работать:

 find . -type d -exec touch {}/"${name}" \; 

Обратите внимание, что комментарий ChuckCottrill к ответу terdon НЕ работает, поскольку он touch только файла с именем $ name в текущем каталоге и самой директории.

Он не будет создавать файлы в подкаталогах по запросу OP, в то время как эта версия будет здесь.

  • Получить определенную информацию из файла журнала
  • Метод командной строки для поиска повторяющихся опечаток с номерами строк
  • Экран GNU: как включить или отключить ведение журнала во время установки экрана?
  • Как открыть debugfs в разделе в файле изображения?
  • труба в оболочке с перенаправлением
  • Предложение названия пакета в Fedora
  • Grep для конкретного элемента
  • Как скрыть команды, введенные в оболочку Linux?
  • Добавление завершения прохождения к рыбной оболочке
  • Простой способ просмотра содержимого каталогов в файловых системах Linux / UNIX
  • Сравните подобие или расстояние levenshtein между каждой парой линий внутри файла?
  • Удалить все «nohup.out» в рекурсивном каталоге
  • Linux и Unix - лучшая ОС в мире.