Используйте chown -R, исключая один или два файла

Как я могу использовать chown -R, но исключаю один или два файла?

Мне периодически нужно запускать

sudo chown -R www-data:www-data *

и

sudo chown -R ubuntu:ubuntu *

Но я ' Я хотел бы исключить один или два файла из этих команд, чтобы не изменять разрешения этих исключенных файлов.

Как можно исключить file1.php или оба file2.txt и file3.php?

4
задан 17 July 2019 в 22:09

1 ответ

Набор bash extglob опция с

shopt -s extglob

и используйте его как этот для исключения этих файлов:

sudo chown -R www-data:www-data !(file1.php)
sudo chown -R ubuntu:ubuntu !(file2.txt|file3.php)

Это работает с файлами и каталогами одинаково, но только в текущем каталоге. Если необходимо исключить файлы в подкаталогах, объединить вышеупомянутое с globstar опция (shopt -s globstar):

sudo chown -R www-data:www-data **/!(file1.php)

Это соответствует каждому файлу и каталогу кроме тех названных file1.php.

Пример выполняется

$ touch {1..3}
$ shopt -s extglob
$ echo !(1)
2 3
$ echo !(1|2)
3
$ mkdir a
$ touch a/{1..3}
$ tree
.
├── 1
├── 2
├── 3
└── a
    ├── 1
    ├── 2
    └── 3
$ shopt -s globstar
$ echo **/!(1|2)
3 a a/3

Дальнейшее чтение

7
ответ дан 1 December 2019 в 09:12

Другие вопросы по тегам:

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