с помощью команды cat для копирования содержимого файла во все файлы в папке каталог (рекурсивно) [закрыто]

0
21.07.2018, 11:42
1 ответ

Чтобы перезаписать каждый файл во всей иерархии каталогов содержимым файлаdata:

find. -type f ! -path './data' -exec sh -c 'tee "$@" <data >/dev/null' sh {} +

Если вы хотите добавить содержимое data, используйте tee -aвыше.

! -path./dataпозволяет избежать изменения файла, из которого мы читаем.

Дочерняя оболочка получит набор путей из findи будет использовать teeдля распространения содержимого dataв эти файлы.

Чтобы использовать catвместоtee:

find. -type f ! -path './data' -exec sh -c '
    for pathname do
        cat data >"$pathname"
    done' sh {} +

Здесь, чтобы добавить данные, используйте >>вместо >.

Запустите это в безопасном каталоге. Запуск его в вашем домашнем каталоге уничтожит все ваши файлы. Чтобы восстановиться после этого, вам нужно будет восстановить из последней резервной копии. Никогда не запускайте команды, которые вы скопировали и вставили из Интернета, не зная, что они делают или могут делать.

Связанные:

0
28.01.2020, 04:17

Теги

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