Назад | Перейти на главную страницу

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

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

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

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

Обратное сглаживание:
Вы хотите обратный матч шара, я бы сделал так:

Вы можете выполнить обратное сопоставление с более новым bash, если включите расширенную подстановку. Например, чтобы сопоставить все, что не содержит foo или bar в имени:

shopt -s extglob
echo !(*foo*|*bar*)

Или просто все, что не имеет foo:

shopt -s extglob
echo !(*foo*)

Найти:
Вы также можете использовать find (я думаю, это самый надежный вариант) и использовать! чтобы отменить совпадение, а затем запустите команду с xargs -0:

find . ! -iname 'foo' -print0 | xargs -0 echo

Просто:
Просто перенесите папку в другое место, сделайте то, что вам нужно, и верните ее :-)

rsync -arv --exclude = {файлы} {Место назначения}

решение find порождает один процесс chown для каждого файла, что иногда может быть проблемой. Это решение порождает только один процесс Perl:

find . | perl -nle "chown($(id -u user), $(id -g group), \$_) unless m/foo/"