Как исключить папку при выполнении файловых операций, например, cp, mv, rm и chown и т.д. В Linux

Как вы исключаете папку при выполнении файловых операций, например, cp и т.д.

В настоящее время я использую wild card * для применения файловой операции ко всем, но мне нужно исключить одну папку.

Команда, которую я действительно хочу использовать, - это chown, чтобы изменить владельца всех файлов в каталоге, но мне нужно исключить один подкаталог.

Ответ 1

Если вы используете bash и активируете extglob через shopt -s extglob, вы можете использовать !(<pattern>), чтобы исключить данный шаблон.

Ответ 2

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

Ответ 3

for file in *; do
  if [ $file != "file_I_dont_want_to_chown" ]
    then
      chown -R Camsoft $file
  fi
done 

Ответ 4

Объедините несколько небольших острых инструментов unix: Чтобы исключить папку "foo"

% ls -d * | grep -v foo | xargs -d "\n" chown -R Camsoft

Ответ 5

В этой ситуации я бы рекомендовал использовать 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 *

Ответ 6

Другим вариантом может быть временное удаление разрешений на этот файл/папку.
В Unix вам нужно "x" разрешение на каталог, чтобы ввести его.

edit: очевидно, что это не goign для работы, если вы создаете резервную копию живой производственной базы данных, но для исключения вашей коллекции "интересных изображений" при копировании документов на USB-ключ она может использоваться повторно.