Rake FileList — очистить каталог, исключить подкаталог

Я новичок в ruby, rake, buildr и, конечно же, в FileUtils и FileList.

У меня есть такая структура каталогов:

+root
|-dir1
|+dir2
||-dir not to delete
||-dir3
|-dir4
…

После очистки все, что должно остаться, это:

+root
|+dir2
||-dir not to delete

Прямо сейчас я пытаюсь это:

clean do
  FileList[_(:root) + "/**/*"]
    .exclude(_(:dir not to delete))
    .each do |file|
    puts file
  end
end

что »ставит«

root/dir1
root/dir2
root/dir/dir3
root/dir4

Но как я могу теперь перейти к удалению всего, что принимает «каталог, который нельзя удалить», в том числе внутри его родительского каталога?


person philipp    schedule 07.11.2013    source источник


Ответы (1)


могут быть более разумные способы сделать это, но вы можете просто вычесть соответствующие файлы/каталоги следующим образом:

все файлы в моем каталоге конфигурации:

FileList['config/**/**']
=> ["config/application.rb", "config/boot.rb", "config/compass.rb", "config/database.yml", "config/environment.rb", "config/environments", "config/environments/caching.rb", "config/environments/development.rb", "config/environments/production.rb", "config/environments/test.rb", "config/initializers", "config/initializers/formtastic.rb", "config/initializers/omniauth.rb", "config/initializers/secret_token.rb", "config/initializers/session_store.rb", "config/initializers/slim.rb", "config/initializers/typus.rb", "config/initializers/whitelabel.rb", "config/initializers/wrap_parameters.rb", "config/locales", "config/locales/de.base.yml", "config/locales/de.formtastic.yml", "config/locales/de.label.yml", "config/locales/de.yml", "config/locales/en.base.yml", "config/locales/en.formtastic.yml", "config/locales/en.label.yml", "config/locales/en.yml", "config/routes.rb", "config/typus", "config/typus/event.yml", "config/typus/highlight.yml", "config/typus/job.yml", "config/typus/location.yml", "config/typus/material.yml", "config/typus/topic.yml", "config/typus/user.yml", "config/whitelabel.yml"]

удаление всех файлов, которые находятся в каталоге локалей:

FileList['config/**/**'] - FileList['config/**/locales/**']
=> ["config/application.rb", "config/boot.rb", "config/compass.rb", "config/database.yml", "config/environment.rb", "config/environments", "config/environments/caching.rb", "config/environments/development.rb", "config/environments/production.rb", "config/environments/test.rb", "config/initializers", "config/initializers/formtastic.rb", "config/initializers/omniauth.rb", "config/initializers/secret_token.rb", "config/initializers/session_store.rb", "config/initializers/slim.rb", "config/initializers/typus.rb", "config/initializers/whitelabel.rb", "config/initializers/wrap_parameters.rb", "config/locales", "config/routes.rb", "config/typus", "config/typus/event.yml", "config/typus/highlight.yml", "config/typus/job.yml", "config/typus/location.yml", "config/typus/material.yml", "config/typus/topic.yml", "config/typus/user.yml", "config/whitelabel.yml"]
person phoet    schedule 07.11.2013
comment
это действительно выглядит умнее! Я дам ему попробовать! - person philipp; 07.11.2013