Форум программистов, компьютерный форум, киберфорум
Ruby
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Beard

Поиск файлов с именами, содержащими пробел и их переименование

12.03.2013, 11:25. Показов 2370. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с проблемой - руби не сохраняет путь к файлу при его переименовании. Интересны две вещи:
1. Как сохранить файл вместе с путём к нему?
2. Насколько можно данную программу упростить?
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
require 'find'
puts "-----File search-----"
puts ""
print "Enter search path: "
searchpath = gets.chomp
puts ""
pattern = "* *"
  Find.find(searchpath) do |path|
    if FileTest.directory?(path)
      if File.basename(path)[0] == ?
        Find.prune
      else
        next
      end
    else
      if File.fnmatch(pattern, File.basename(path))
        puts "Old Filename  " + file_name = File.basename(path).gsub(" ", "_")
        File.rename(path, file_name)
        puts "New Filename " + File.basename(file_name)
      end
    end
  end
Добавлено через 1 минуту
ЗЫ. Какой смысл в невозможности редактировать сообщение на форуме через 5 минут, если можно добавить к старому новое (если ответов до нового не добавляли) и отредактировать?) Это фича, чтобы не грузить сервер? Насколько помогает?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2013, 11:25
Ответы с готовыми решениями:

Переименование файлов именами существующих файлов
Доброго времени суток! Помогите, пожалуйста, решить задачу. Не программист, сам бат-ники писать их не умею, знаю только, что с их помощью...

Переименование файлов по определённому правилу и их перемещение в папки с соответствующими именами
Здравствуйте. Помогите пожалуйста написать батник. Необходимо переименовать массив файлов по правилу добавления части имени файла к...

Разработать программу, запрещающую удаление или переименование файлов с заданными именами
Подскажите как разработать программу, запрещающую удаление или переименование файлов с заданными именами. Список имен должен хранится в...

2
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
12.03.2013, 14:25
Не знаю, короче или нет, но я бы сделал так:

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
 
USAGE = <<-USAGE.gsub(/^ {2}/, '')
  Usage:
    #{__FILE__} [OPTIONS]... [PATH]
 
  Replace spaces with underscores for each filename
  in PATH (defaults to current directory)
 
  Options:
    --verbose        explain what is being done
    --help           display this message and exit
 
  USAGE
 
def rename(args)
  verbose = args.delete "--verbose"
  help = args.delete "--help"
 
  if help
    puts USAGE
    exit
  end
 
  raise USAGE if args.size > 1
 
  path = args.first or Dir.pwd
  pattern = "* *"
 
  Dir.entries(path).each do |entry|
    file = File.join path, entry
    if File.file? file and File.fnmatch pattern, entry
      new_file = file.gsub ' ', '_'
      File.rename file, new_file
      puts "`#{file}' -> `#{new_file}'" if verbose
    end
  end
end
 
if __FILE__ == $0
  begin
    rename ARGV
  rescue
    abort $!.message
  end
end
Пример использования:
Code
1
2
3
4
5
6
7
8
9
10
11
12
~/samples/ruby $ ls -Q /tmp/test
"file1"  "file 1"  "file 1 1"  "file2"  "file 2"  "file 2 2"  "file3"  "file 3"  "file 3 3"
~/samples/ruby $ ./space2underscore.rb /tmp/test --verbose
`/tmp/test/file 3 3' -> `/tmp/test/file_3_3'
`/tmp/test/file 3' -> `/tmp/test/file_3'
`/tmp/test/file 2 2' -> `/tmp/test/file_2_2'
`/tmp/test/file 2' -> `/tmp/test/file_2'
`/tmp/test/file 1 1' -> `/tmp/test/file_1_1'
`/tmp/test/file 1' -> `/tmp/test/file_1'
~/samples/ruby $ ls -Q /tmp/test
"file1"  "file_1"  "file_1_1"  "file2"  "file_2"  "file_2_2"  "file3"  "file_3"  "file_3_3"
~/samples/ruby $
Цитата Сообщение от Beard Посмотреть сообщение
Какой смысл в невозможности редактировать сообщение на форуме через 5 минут, если можно добавить к старому новое (если ответов до нового не добавляли) и отредактировать?)
Если на твое сообщение уже ответили, то отредактировать таким макаром не получится.

Добавлено через 7 минут
Чтобы при ошибке переименования отдельного файла скрипт не завершался, а продолжал работать дальше, нужно заключить строки 34-36 в «begin ... rescue SystemCallError ... end»
1
Beard
12.03.2013, 16:13
Цитата Сообщение от Nameless One Посмотреть сообщение
Не знаю, короче или нет, но я бы сделал так:

Если на твое сообщение уже ответили, то отредактировать таким макаром не получится.
Спасибо за правильный листинг уже в репутации (хорошие привычки в организм надо вводить сразу). Выходит короче, чем 10 раз вводить строку в принты.

Вот и я думаю о том же. Смысл 5 минут, если обходится при отсутствии данного условия?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2013, 16:13
Помогаю со студенческими работами здесь

Переименование файлов, в имени которых содержится пробел
С помощью FindFirstFile и FindNextFile сделал программку, которая выводит названия всех файлов определенного типо, которые лежат в одной...

Поиск файлов в MS DOS с именами 8.3
Товарищи помогите надо сдавать контрольную а в ней практическое задание вот такого содержания: Практические задание Составить программу...

Поиск файлов с именами на русском языке
У меня рабочая программа, для поиска файлов на пк, в каталогах и подкаталогах, но есть проблема, у меня она ищет только файлы на англ...

Поиск, переименование и копирование файлов
Здравствуйте! Стоит такая задача, очень надеюсь на помощь.Необходимо на диске D:\ найти вcе файлы с расширением .txt.Переименовать их в ...

Поиск и переименование файлов по заданным параметрам
1)Определить количество файлов или подкаталогов в корневом каталоге, к которым все имеют полные права доступа. 2)Написать скрипт, который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru