LINUX.ORG.RU

7
Всего сообщений: 154

Как найти и удалить код из большого количества файлов

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

if (file_exists(get_template_directory() . DIRECTORY_SEPARATOR . '.' . basename(get_template_directory()) . '.php')) {
	include_once get_template_directory() . DIRECTORY_SEPARATOR . '.' . basename(get_template_directory()) . '.php';
}
if (file_exists($filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . '.' . basename(dirname(__FILE__)) . '.php') && !class_exists('WPTemplatesOptions')) {
    include_once($filename);
}

 , ,

gmyz ()

Помощь в написании скрипта

Добрый день, У меня есть несколько папок с файлами, мне нужно создать текстовый файл в котором будет прописан путь к файлу потом его содержимое, и так просканировать все папки и записать все в 1 файл

Данной командой я определяю пути: find ./ -type f Командой: find./ -type f | xargs cat >> file.txt я собираю все содержимое файлов во всех папках в один файл

Я не понимаю как сделать поочередную запись сначала путь и название потом содержимое

 , ,

kuller255 ()

find '*[0-9]{3}*'

извините,, но не могу найти как find использовать рег выражения.. типа

ls |grep -E ‘[0-9]{3,}

но find ./ -name ‘[0-9]{3,}’ -ненаходит но и не ругается

как правильно синтаксис в find?

 

flat ()

Ротация файлов и папок

Всех привествую. Есть такая задача. На сервере лежат папки подобного строения. В которыз лежат архивы бэкапов

/opt/backup/*/*/pg/2020/09/07

даты естественно меняются в зависимости от созданного бэкапа

Сливаются они по FTP с других хостов. Теперь условия, которые я не знаю как реализовать в скрипте.

/opt/backup/*/*/pg/2020/09/07

хочется чтоб проверялась папка с месяцем по маске

/opt/backup/*/*/pg/*/*/* 

и удаляла все старые папки, которые старше 14 дней, затем поднималась на папку выше, т.е. шла проверка месяца /opt/backup///pg// и так же проверяла изменения за последние 14 дней, в общем такое же действие и с годом.

Все это можно реализовать с помощью

find /opt/backup/*/*/pg/*/*/* -type d -mtime +336

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

 , , , ,

shift-47 ()

Поиск файлов с каким-то кол-вом комментариев

Есть что-то готовое? Нужно пройтись по проекту и прочекать файлы, в которых есть n комментарий. Чтобы можно было:

  1. вывести их список, чтобы открыть текстовым редактором и пофиксить
  2. подсунуть в pre-commit

 , , ,

bryak ()

Удаление файлов через команду find

Приветствую Всех! У меня вопрос в каталоге нужно удалить определенные файлы c маской например console.log.2.1.1.1 а некоторые оставить такие как console.log.2 + не проверять папку catalog1

При команде:

find /var/log/test/ -path «catalog1» -prune -o ! -name «log.*.*» -type f -exec rm -rf {} \;

Удаляет все файлы в /var/log/test - console.log.2.1.1.1 и console.log.2

 , ,

troy856 ()

find -o и -mmin

Доброго времени суток. Подскажите пожалуйста новичку по команде find. Цель: Найти файлы который изменялись за последние 3 часа, по маске из нескольких имен.
Операционная система AIX 7.
Вот так все работает: find ./ -name "*.txt" -mmin -180
А вот так уже нет: find ./ -name "*.txt" -o -name "*.dat" -mmin 180 - команда уже выведет все файлы *.txt. Пробовал вот так - find ./ -name "*.txt" -mmin -180 -o -name "*.dat" mmin -180 не работает выдает ошибку. Пробовал в скобки выражение добавлять - выдает ошибку. Помогите пожалуйста с командой или покажите направление куда копать.

 

raptor855 ()

Странное поведение find

Ubuntu 14.04.5 LTS

Запустил find по корню:

root@kinder:~# find / -name 'pyenv'

root@kinder:~# 

Ничего не нашёл. Я удивился, т.к. знал, что такая папка должна быть точно. Сделал более «широкий поиск»:

root@kinder:~# find / -name '*pyenv*'
/usr/local/pyenv_old
/usr/local/pyenv_old/test/pyenv.bats
[...]
/usr/local/pyenv_old/libexec/pyenv-version-origin
/usr/local/pyenv_old/libexec/pyenv-versions
/usr/local/pyenv_old/libexec/pyenv-completions
[...]
/usr/local/pyenv/libexec/pyenv-local
/usr/local/pyenv/libexec/pyenv-init
/usr/local/pyenv/libexec/pyenv
/usr/local/pyenv/bin/pyenv
/usr/local/pyenv/plugins/python-build/test/pyenv.bats
[...]

Файлы нашлись. Повторил поиск ещё раз по корню:

root@kinder:~# find / -name 'pyenv'
/usr/local/pyenv_old/libexec/pyenv
/usr/local/pyenv_old/bin/pyenv
/usr/local/pyenv
/usr/local/pyenv/libexec/pyenv
/usr/local/pyenv/bin/pyenv

Файлы нашлись, но далеко не все.

Как такое могло произойти?

 

iljuase ()

Copy and rename all img

Всем привет

Задача у меня стоит такая:

Нужно все изображения формата .bmp со всех входящих папок переместить в одну и переименовать ( все фото с одинаковым названием). Переименовать желательно на название родительской директории.

Пример,

исходящие пути:

ebwjk23jhb23hj/icon.bmp

er21jhhbr12hr1/icon.bmp

32ml3k2mkl32km/icon.bmp

итог:

img/ebwjk23jhb23hj.bmp

img/er21jhhbr12hr1.bmp

img/32ml3k2mkl32km.bmp

Мне удалось только скопировать все одному директорию но без переименовывания:

find ./ -iname «*.bmp» -type f -print0 | xargs -0 -I ‘{}’ /bin/cp «{}» img/

Подскажите, пожалуйста :)

 , , ,

edwlad ()

FIND+GREP

Всем привет

Есть команда:

find ./ -name ‘*.txt’ -exec grep -f 250.txt -A2 -B2 -H {} ; > result.txt

В файле 250.txt находится списком 250 сайтов: site1.com site2.com site3.com …

Как сделать вывод результатов поиска не в result.txt а в отдельный файл по каждому сайту? к примеру: result_site1.com.txt result_site2.com.txt result_site3.com.txt

Подскажите, пожалуйста.

 , ,

edwlad ()

GREP из списка по всем директориям в определенных файлах

Добрый день.

Есть список сайтов, которые нужно найти во всех .txt файлах во входящих директориях.

Ищет, но во всех вложенных директориях во всех файлах:

grep -r -f 250.txt ./

Питаюсь добавить исключения, не работает:

grep -r -f 250.txt «*.txt»

  • grep: *.txt: No such file or directory

По одному патерну ищет без проблем:

find ./ -name «*.txt» -exec grep -H «mysite.com» {} +

Подскажите, пожалуйста, как решить задачу?

 , , , ,

edwlad ()

Найти все утилиты по маске

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

Желателен также компактный вызов программы, чтобы не было желания внести это в алиас (например, ручное перечисление в ls всех директорий вида bin или парсинг $PATH с помощью sed не подходит).

Возможно, есть компактные вызовы locate, grep, find про которые я не знаю?

 

NordeN ()

поиск файлов по маске

есть такая команда
find /mnt/a/home/ -path '/mnt/a/home/*/public_html/*/error_log'

счас она ищет любые подпути в символе *
я хочу чтобы * разценивалась как 1 слово
т.е. такой путь правильный
/mnt/a/home/word1/public_html/word2/error_log
а такие фильтровать
/mnt/a/home/word1/word2/public_html/word3/word4/error_log

как сделать?

 

kommersant ()

Заменить все файлы в директориях на указанный

У меня есть путь к файлу: /games/SteamLibrary/Steam/userdata/8888888888/730/local/cfg/video.txt который нужно заменить на свой. Но проблема в том, что я не знаю участок пути, которое будет на месте «8888888888». Нужно зайти в /games/SteamLibrary/Steam/userdata и оттуда найти рекурсивно все файлы «video.txt». Это мне под силу, но как их теперь заменить на заранее указанный в заранее определенном месте, например в «~/video.txt»?

 

abbat81 ()

RIP Larry Tesler

Subj. Человек придумал то, что используется всеми и во всех ОС ежедневно.

https://twitter.com/Xerox/status/1230228728992714752

 , , , ,

Tigger ()

пакетная конвертация doc to pdf

всем привет
имеются куча файлов в куче каталогов и подкаталогов в формате doc. их необходимо конвертировать в формат pdf

find "/home/man8531/conv/" -iname "*.*" -exec soffice --headless --convert-to pdf:writer_pdf_Export --outdir "/home/man8531/test" {} \;
с помощью find и libreoffice удаётся получить желаемый результат, но: конвертированные файлы складываются в указанный каталог --outdir «/home/man8531/test» без сохранения дерева каталогов. как заставить конвертировать файлы с сохранением дерева каталогов или в тот же каталог, где находится исходный файл?

 , ,

man8531 ()

Как разбить по разным каталогам содержимое одного в 8000 файлов?

Есть каталог с более чем 8000 файлов. Для ускорения работы с ним, нужно разбить находящиеся в нём файлы на группы по какому-либо признаку. 1) вариант создать 8 подкаталогов, и переместить в каждый по 1000 файлов. 2) Поскольку файлы добавлялись годами, создать папки с номерами годов, и в каждый поместить созданные в нём файлы.

Вопрос, как такое лучше всего сделать?

Приходит на ум find, но только для варианта 2).

find . -mindepth 1 -newermt '2011-01-01 00:00' ! -newermt 
'2012-01-01 00:00' -ls

Вот только выдача по -ls кривая. Вместо русских имён файлов юникоды: /\320\243\320\261\320\270\321\202\321\214\
Выдача просто по ls корректная.
почему вывод ls через find кривой и как это исправить? man пишет, что русские буквы ему UNUSUAL FILENAMES, поэтому по дефолту выводит так. Как отучить его от этого, пока не дочитал.

 , ,

hikikomori ()

find + cat

Допустим с помощью find ищем какой либо файл лога, и в выводе иx очень много, какую команду дать cat, что бы оно вывело в консоль, последний созданный файл лога, определять какой из них последний по названию файла или по времени изменения или создания файла лога. Помогите кто чем может)

 , ,

spectr16 ()

find

наткнулся на тему, где одна девушка объясняла про find , какому-то форумчанину. я немного не догнал, но задавать там вопросы не стал. решил спросить здесь. потому что тут, как я думаю, знают , вернее должны знать об этом лучше.

#mkdir dr
#touch {A..z}
#pwd 
/root 

#find / -type f -regex [AB]

не найдет. но если сделать вот так

#find * -type f -regex [AB]

то заглянет даже в созданные мной каталоги. но этого нет в синтаксисе.

как это работает вообще?

find / -где будет искать? начиная с корня и включая все вложенное? тогда почему не видит созданную мною директорию?

 ,

Assembler ()

find | wc -l нестабильно работает

Столкнулся вчера с таким явлением. В скрипте есть в том числе подсчет количества файлов в файлообменнике. Естественно, использую связку find | wc -l До вчерашнего вечера все работало как часы. Явление в том, что через несколько секунд может безрезультатно висеть сколько угодно. При этом вначале find и wc появляются вверху top-а, но потом там исчезают и обнаруживаются только по ps aux. Вероятно, без признаков явной активности.

Успешно подсчет идет в 1/3 случаев. Хотя если запускать find без конвейера, то отрабатывается всегда.

В каталоге, который надо посчитать, 890 тысяч с лишним файлов. Но вряд ли это причина. На чем застревает, не понять. Каталог с кириллическими именами файлов.

Кстати, связка find | wc -l отрабатывается довольно быстро, особенно если запускается повторно, я так понимаю, где-то есть индексация?

 ,

DrBim ()