Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14

Подскажите команды для поиска папок, файлов, текста в файлах и его замены

31.03.2017, 23:08. Показов 2713. Ответов 15

Студворк — интернет-сервис помощи студентам
Доброго времени суток, интересует реализация скрипта,для
1.поиска файлов и папок с последущим их дублированием только с другими именами, к примеру find -name он найдет мне нужные и папки и файлы, только нужно что он найдет про дублировал и переименова?
2. почти такой же вопрос, только нужно чтобы находил текст внутри фалов и менял его на другой, как пример grep -Ir,
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2017, 23:08
Ответы с готовыми решениями:

Подскажите утилиту для поиска текста во всех файлах, содержащих текст
Утилита grep не ищет в файлах .doc (или быть может я не правильно пользуюсь?). Подскажите как поискать?

Скрипт для замены текста в файлах
Ищу решение - как лучше реализовать замену определенного текста в текстовом файле? Файлы примерно по 5мб, разных пар текста для замены...

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

15
Заблокирован
31.03.2017, 23:16
У find есть опция -exec. И делай с найденным файлом все, что хочешь остальными командами.
1
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
01.04.2017, 06:30  [ТС]
к примеру можно? (find -name *google* -exec cp а дальше?) он же найдет и файлы и папки, только вот просто "cp" скопирует файлы как я понимаю, а "cp -a" папки, реализовать то хочется что бы и то и то, с сохранением путей
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
01.04.2017, 10:07
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
"cp -a" папки, реализовать то хочется что бы и то и то, с сохранением путей
Стоит научится выражать свои мысли так, чтоб и другим было понятно. В крайнем случае, приводите пример того, что Вы хотите получить.
2. man sed
1
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
02.04.2017, 16:01  [ТС]
допустим есть каталоги и файлы в них, к примеру:
/patch/google/vesty/vesty25.php
/patch/google/vesty/vesty.cpp
/patch/google/vesty/init.c
это были примеры не измененых файлов, скрип нужен чтобы переименовать каталоги с названием google,vesty, и файлы в нутри каталогов с такими же названиями, тоесть к такому вот виду
/patch/nova/novosty/novosty25.php
/patch/nova/novosty/novosty.cpp
/patch/nova/novosty/init.c

Добавлено через 29 минут
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/bash
 
copyNew()
{
    mkdir $2
    find . -name *$1* -exec cp --parents -R {} $2 \;
}
 
if [ -z "$2" ]
then
    copyNew "nova" $1
    copyNew "novosty" $1
    
    copyNew "google" $1
    copyNew "vesty" $1;
else
    copyNew $1 $2
fi
что-то типо такого

Добавлено через 8 минут
такая же ситуация и с "grep" только нужно найти уже все упоминания внути файлов, и исправить на нужное, тоесть если грепом пройтись в каталоге "patch" и найти тот же "google" (его надо заменить на "nova") результатов может быть >500 и руками можно править очень долго, причем встречется в разных файлах и папках
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
02.04.2017, 16:39
Лучший ответ Сообщение было отмечено Aleha_Druga как решение

Решение

Bash
1
2
3
4
5
6
7
8
9
shopt -s globstar
for d in /patch/**/google/ /patch/**/vesty/; do
    case $d in
        *google/) mv -T "${d%/}" "${d%google/}nova" ;;
         *vesty/) mv -T "${d%/}" "${d%vesty/}novosty" ;;
    esac
done
rename 's/vesty([^\/]*)$/novosty$1/' /patch/**/vesty*
shopt -u globstar
Добавлено через 15 минут
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
в каталоге "patch" и найти тот же "google" (его надо заменить на "nova")
Bash
1
grep -ZIlrw 'google' /patch/ | xargs -0 sed -i 's/\<google\>/nova/g'
1
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
03.04.2017, 08:18  [ТС]
Marinero, а что если пути будут и другие, к примеру есть так:
/patch/google/vesty
и бывает и так:
/patch/hdpi/log/google
и так же и др.
/patch/mali/mp/vesty.
сработает скрипт, вообщем нужно всё что он найдет в каталоге "patch" всё переименовать
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
03.04.2017, 13:37
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
нужно всё что он найдет в каталоге "patch" всё переименовать
Скрипт так и работает. Проверьте.
1
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
05.04.2017, 19:41  [ТС]
Marinero, да работает,но возникла другая проблема, допустим файлы weg_google_01.mk он не находит и не правит, тоже самое и с грепом он тоже не правит если нет полного совпадения, к примеру текст в файле www_vesty_film он не поменяет, это можно как то решить?

Добавлено через 1 час 18 минут
c грепом разобрался, осталось с find решить проблему

Добавлено через 21 минуту
Bash
1
grep 'google' -P -R -I -l  patch/ | xargs sed -i 's/google/nova/g'
так заменит во всех файлах google на nova. даже www_google_ms заменит на www_nova_ms.

Добавлено через 17 минут
c find разобрался от части
Bash
1
find ./ -name '*google*' -exec rename 's/google/nova/g' {} +
но если он находит папку google и еще и внутри папки файл google то переименовывает сначало папку а потом файл, но файл уже найти не может т.к. по факту той папки уже не существует
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
05.04.2017, 19:51
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
c find разобрался от части
Если не понимаете что делаете, почему не сделали по аналогии с сделанным в моем коде? Там есть rename для vesty, но нет find … -exec rename
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
но файл уже найти не может т.к. по факту той папки уже не существует
Вы решили что в коде отдельно переименовываются папки и файлы потому что мне делать было нечего?
0
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
05.04.2017, 20:06  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
коде отдельно переименовываются папки и файлы
это в моём варианте, в вашем коде всё хорошо переименовывается за исключением
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
файлы weg_google_01.mk он не находит и не правит
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
05.04.2017, 22:48
Для google
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
файлы weg_google_01.mk
надо добавить команду для переименования, тогда и будет
0
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
06.04.2017, 00:09  [ТС]
Marinero, ну дак она же есть уже в вашем коде!? это был пример файла, вариантов может быть много, я их не могу знать и прописать все

Добавлено через 4 минуты
и ещё вопрос, как грепу ограничить поиск? тоесть исключить из поиска определенные папки
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
06.04.2017, 09:59
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
есть уже в вашем коде!?
Цитата Сообщение от Marinero Посмотреть сообщение
rename 's/vesty([^\/]*)$/novosty$1/' /patch/**/vesty*
Будет ли эта команда находить и переименовывать
Цитата Сообщение от Marinero Посмотреть сообщение
weg_google_01.mk
Цитата Сообщение от Aleha_Druga Посмотреть сообщение
как грепу ограничить поиск? тоесть исключить из поиска определенные папки
Цитата Сообщение от man grep
Code
1
2
3
4
5
6
--exclude=GLOB
  Skip  files whose base name matches GLOB (using wildcard matching).  A file-name glob can use *, ?,
  and [...] as wildcards, and \ to quote a wildcard or backslash character literally.
 
--exclude-dir=DIR
  Exclude directories matching the pattern DIR from recursive searches.
1
0 / 0 / 0
Регистрация: 03.01.2017
Сообщений: 14
15.04.2017, 07:35  [ТС]
Marinero, я извиняюсь что не ясно выразился, говоря про weg_google_01.mk я не имел конкретно google, понятное дело что переименованием *vesty* я не переименую google, это был пример, по всей видимости не лучший. Я немного перефразирую тогда, не переименует он weg_vesty_01.mk, говорю не от пустого места, проверял, скрипт да, красивый работает без лишних замарочек, но вот такие вот есть ньюансы.
0
 Аватар для Viacheslav78
270 / 18 / 0
Регистрация: 16.02.2016
Сообщений: 29
29.05.2017, 08:32
Linux: основные команды. Карманный справочник. Д. Дж. Еаррет
Bash Reference Manual Reference Documentation for Bash Edition 4.4, for Bash Version 4.4. September 2016
Bash Guide for Beginners by Machtelt Garrels
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2017, 08:32
Помогаю со студенческими работами здесь

Регулярное выражение для замены текста в файлах .php
Сабж. Есть вирутальный сервер на дебиане, на нём хостятся сайты. Есть региональная сетка сайтов на поддоменах типа: abaka, tula,...

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

Не отрабатывают команды для удаления файлов и папок в циклах с FOR /F
Дамы и господа! Вопрос следующий: В приведённом примере не отрабатывают команды удаления папок и файлов. Никаких ошибок,...

Ищу программу для поиска текста в файлах по регулярному выражению
Привет! Я обрадовался, когда, как оказалось, есть такая функция в Notepad++ . Но разочарования ждать долго не пришлось. Ищу по...

Программы для гибкого поиска и замены текста по шаблону
Есть ли программы, способные найти все совпадения в тексте, myR5] myR8] myR10], а затем умножить числа в квадратных скобках на 2 ? ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru