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

Во всех отношениях, CentOS является Redhat. CentOS, однако более гибко в том, что они могут сделать.

С веб-сайта CentOS:

CentOS разрабатывается малочисленной, но растущей командой базовых разработчиков. В свою очередь базовые разработчики поддерживаются сообществом активного пользователя включая системных администраторов, администраторов сети, корпоративных пользователей, менеджеров, базовых участников Linux и энтузиастов Linux со всего мира.

CentOS имеет многочисленные преимущества перед некоторыми из других проектов клона включая: активное и растущее пользовательское сообщество, быстро восстановленные, протестированные, и пакеты опечаток QA'ed, обширная зеркальная сеть, разработчики, которые являются contactable и быстро реагирующими, несколько проспектов бесплатной поддержки включая Чат IRC, Списки рассылки, Форумы, динамический FAQ.

Короче говоря CentOS является общественной версией Redhat. Вы используете Ubuntu, таким образом, можно понять эту аналогию немного лучше: CentOS к Redhat, как Linux Mint к Ubuntu.

12
09.10.2013, 06:28
4 ответа

Как насчет:

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/ на каждом из них.

14
27.01.2020, 19:55
  • 1
    или, найти. - тип d - должностное лицо касаются файла {} \; –  ChuckCottrill 09.10.2013, 08:19
  • 2
    или, find . -type d -exec touch {}/file\; –  Ned64 08.09.2015, 15:24

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

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

В ударе:

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 в цикле. В zsh:

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

В ударе:

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' _ {} +
5
27.01.2020, 19:55

Чтобы просто создать файл, можно использовать коснитесь с помощью найдите :

$ find . -type d -exec touch {}/file \;
0
27.01.2020, 19:55

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

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

Обратите внимание, что комментарий ЧакаКоттрилла к ответу Тердона НЕ работает, так как он коснется только файла с именем $ name в текущем каталоге и самого каталога.

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

2
27.01.2020, 19:55

Теги

Похожие вопросы