如何使用单个ack命令更改嵌套在子目录中的文件的权限?

时间:2010-05-03 12:49:42

标签: linux ubuntu chmod

我有以下目录树。

当向/从VirutalBox移动时,文件权限会发生变化。 所以,我知道/不是ack可以用来从命令行递归执行。

有人可以向ack chmod 644所有*.rb个文件显示命令吗?

[~/dotfiles (master)⚡] ➔ tree
.
|-- cap_bash_autocomplete.rb
|-- dotfile_bash_aliases
|-- dotfile_bashrc
|-- rake_bash_autocomplete
|-- tidbits
|   |-- README
|   |-- lib
|   |   `-- aliasdir.rb
|   |-- mhsrc
|   |-- proxy.pac
|   |-- rails-template.rb
|   `-- tasks.thor
`-- usage

2 个答案:

答案 0 :(得分:2)

您不需要xargs。 find有exec, execdirok内置选项:

find ~/dotfiles -name "*.rb" -exec chmod 644 {} +

execdir执行文件所在的子目录中的命令,ok要求确认。您可以使用\;+结束命令,加号将同时执行多个文件,这有时会获得更多性能,但通常不相关,有时可能会损害性能,甚至无法工作(如果底层命令不允许处理多个文件)。

答案 1 :(得分:1)

我不知道ack是什么,但您可以使用标准的shell命令来执行此操作:

find <top of directory tree> -name \*.rb | xargs chmod 644