Как изменить права доступа к файлам, вложенным в подкаталоги, одной командой ack? - PullRequest
1 голос
/ 03 мая 2010

У меня есть следующее дерево каталогов.

При перемещении в / из 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 ]

2 голосов
/ 10 мая 2010

Вам не нужны xargs. find имеет опции exec, execdir и ok встроенный:

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

execdir выполняет команду из подкаталога, в котором находится файл, ok запрашивает подтверждение. Вы можете завершить команду с помощью \; или +, плюс будет запускать несколько файлов одновременно, что иногда будет увеличивать производительность, но часто не имеет значения, а иногда может ухудшить производительность или даже не работать (если основная команда не разрешает обработку нескольких файлов).

1 голос
/ 03 мая 2010

Понятия не имею, что такое ack, но вы можете сделать это с помощью стандартных команд оболочки:

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