将命令应用于名称与正则表达式匹配的文件

Ser*_*gey 3 unix bash command-line

例如,我想应用于chmod 777某个目录中名称与某个正则表达式匹配的每个文件。当然我可以做类似的事情chmod 777 f*,但是当涉及到更复杂的事情时,我不知道该怎么做。例如,我无法运行chmod 777 *a{3,5}.

怎么做到呢?

Dan*_*ruz 7

你可以使用find-regex查找文件匹配正则表达式,并使用xargschmod匹配的文件。

$ 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
$ 
Run Code Online (Sandbox Code Playgroud)