Ответ 1
Если вы используете bash и активируете extglob через shopt -s extglob
, вы можете использовать !(<pattern>)
, чтобы исключить данный шаблон.
Как вы исключаете папку при выполнении файловых операций, например, cp и т.д.
В настоящее время я использую wild card * для применения файловой операции ко всем, но мне нужно исключить одну папку.
Команда, которую я действительно хочу использовать, - это chown
, чтобы изменить владельца всех файлов в каталоге, но мне нужно исключить один подкаталог.
Если вы используете bash и активируете extglob через shopt -s extglob
, вы можете использовать !(<pattern>)
, чтобы исключить данный шаблон.
find dir_to_start -name dir_to_exclude -prune -o -print0 | xargs -0 chown owner
find dir_to_start -not -name "file_to_exclude" -print0 | xargs -0 chown owner
for file in *; do
if [ $file != "file_I_dont_want_to_chown" ]
then
chown -R Camsoft $file
fi
done
Объедините несколько небольших острых инструментов unix: Чтобы исключить папку "foo"
% ls -d * | grep -v foo | xargs -d "\n" chown -R Camsoft
В этой ситуации я бы рекомендовал использовать find. Вы можете указать пути для исключения с помощью -not -iwhilename 'PATH'. Затем, используя exec, вы выполните команду, которую вы хотите выполнить
find . -not -iwholename './var/foo*' -exec chown www-data '{}' \;
Хотя это, вероятно, помогает в вашей ситуации, я также вижу, что скрипты устанавливают неизменяемый флаг. Удостоверьтесь, что вы удаляете флаг, когда вы сделали это, чтобы использовать ловушку для этого, на случай, если script будет убит раньше (обратите внимание: запустите с script, код ловушки запускается, когда сеанс bash завершается). Много неприятностей в моем варианте, но это хорошо в некоторых ситуациях.
cd /var
trap 'chattr -R -i foo > /dev/null 2>&1' 0
chattr -R +i foo
chown -R www-data *
Другим вариантом может быть временное удаление разрешений на этот файл/папку.
В Unix вам нужно "x" разрешение на каталог, чтобы ввести его.
edit: очевидно, что это не goign для работы, если вы создаете резервную копию живой производственной базы данных, но для исключения вашей коллекции "интересных изображений" при копировании документов на USB-ключ она может использоваться повторно.