3

Например, я хочу применить chmod 777 к каждому файлу в некотором каталоге, имя которого соответствует некоторому регулярному выражению. Конечно, я могу делать что-то вроде chmod 777 f* , но когда дело доходит до чего-то более сложного, я не знаю, как это сделать. Например, я не могу запустить chmod 777 *a{3,5} .

Как это можно сделать?

1 ответ1

6

Вы можете использовать find «s -regex найти файлы , соответствующие регулярное выражение и использовать xargs для chmod соответствующих файлов.

$ ls -l
total 320
-rw-r--r-- 1 user user 0 2011-10-01 09:38 baaaaaaat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 baaat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 baat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 bat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 boo
$ find ./  -regextype posix-egrep -regex '.*a{3,5}.*' -print0 | xargs -0 chmod 0777
$ ls -l
total 320
-rwxrwxrwx 1 user user 0 2011-10-01 09:38 baaaaaaat
-rwxrwxrwx 1 user user 0 2011-10-01 09:38 baaat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 baat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 bat
-rw-r--r-- 1 user user 0 2011-10-01 09:38 boo
$ 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .