применить скрипт через дерево подпапок

В качестве ответа на этот вопрос Стефан Гименес сказал мне запустить crond . Вот как это сделать:

/etc/init.d/crond start

2
03.02.2018, 21:37
2 ответа

Я проверил описанный ниже метод, и он работал нормально

find path  -depth -type d -exec sh /tmp/l.sh {} \;

/tmp/l.sh==> Its the script path
-1
27.01.2020, 23:09

Если скрипт должен быть запущен в каталоге, в котором он должен работать, вам нужно сначала cdтуда. Что-то вроде этого:

find -type d -exec sh -c 'cd -- "$1"; exec /path/to/script.sh' sh {} \;

(изменить путь к скрипту, очевидно.)

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

#!/bin/bash
if [ "$1" ]; then
    cd -- "$1" || exit 1
fi
for file in *.*
...

Проверка, если $1сначала пусто, чтобы поведение по умолчанию по-прежнему работало в текущем каталоге (и чтобы случайно не вызвать cdбез аргументов :это пошло бы на пользователя$HOME).

А затем просто запустите прямой find -execс именем каталога в качестве аргумента скрипта:

find -type d -exec /path/to/script.sh {} \;
0
27.01.2020, 23:09

Теги

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