代码之家  ›  专栏  ›  技术社区  ›  millisami

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

  •  1
  • millisami  · 技术社区  · 16 年前

    我有以下目录树。

    当移动到/从VirutalBox时,文件权限将更改。 所以,我知道/不知道 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 回复  |  直到 16 年前
        1
  •  2
  •   user unknown    16 年前

    你不需要沙格斯。查找具有选项 exec, execdir 和 ok 内置:

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

    execdir 从文件所在的子目录执行命令, 好 啊 要求确认。你可以用 \; 或 + ,plus将同时执行多个文件,这有时会获得更高的性能,但通常不相关,有时可能会损害性能,甚至不起作用(如果底层命令不允许处理多个文件)。

        2
  •  1
  •   JayM    16 年前

    我不知道 ack 是,但您可以使用标准的shell命令:

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