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

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

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

如何做呢?

答案1

您可以使用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
$ 

相关内容