Исключения при удалении файлов (find, rm)

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Закрыто
no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#1

03 фев 2020, 22:36

Задача - удалить логи и т.п. в каталоге ~/.config/chromium/Default
(на примере *.log)
Командой find -name "*.log" -exec rm -rf {} + удаляются все файлы *.log
Надо, чтобы при этом исключить из удаления следующие файлы:
"Default/Local Extension Settings/moihledlmchhofenpacbhphnbnpakgmo/000002.log"
"Default/Local Extension Settings/moihledlmchhofenpacbhphnbnpakgmo/LOG"
"Default/Local Storage/leveldb/000003.log"
"Default/Local Storage/leveldb/LOG"

...
P.S. Просто при чистке всех логов удаляются эти файлы, и слетают настройки расширений.
P.P.S. Папаметры команды find . -name "*.log" -not -name или find . -name "*.log" -wholename не осилил... :hoho:

Аватара пользователя

Ара Магеддон
Сообщения: 583
Зарегистрирован: 08 дек 2018, 01:08
Решено: 18
Благодарил (а): 37 раз
Поблагодарили: 141 раз

Исключения при удалении файлов (find, rm)

#2

04 фев 2020, 03:29

А если классически реализовать: через цикл типа такого https://askubuntu.com/questions/315335/ ... n-a-folder
А внутри проверка (if): если имя файла соответствует шаблону, то оставляем. Иначе удаляем. Я бы так сделал. Или нужно именно одной строкой реализовать?

Аватара пользователя

Ара Магеддон
Сообщения: 583
Зарегистрирован: 08 дек 2018, 01:08
Решено: 18
Благодарил (а): 37 раз
Поблагодарили: 141 раз

Исключения при удалении файлов (find, rm)

#3

04 фев 2020, 06:20

А ещё можно через "костыль": переместить нужные файлы куда-нибудь в tmp, всё удалить и вернуть их обратно :D

no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#4

04 фев 2020, 07:29

Ара Магеддон писал(а):
04 фев 2020, 06:20
костыль
Про такое я подумал почти сразу. Но действительно - "костыль"!
Ара Магеддон писал(а):
04 фев 2020, 03:29
цикл
А вот это буду попробовать, :thumbs:

no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#5

04 фев 2020, 12:25

Пробую такую строку:
find . -name "*.log" -type f \! -exec bash -c "echo '{}' | grep -f ~/exclusions.txt" \; -print
.
./"Local Extension Settings"/moihledlmchhofenpacbhphnbnpakgmo/000002.log
./"Local Extension Settings"/moihledlmchhofenpacbhphnbnpakgmo/LOG
./"Local Storage"/leveldb/000003.log
./"Local Storage"/leveldb/LOG
.
Вываливает весь список (искл-я не срабатывают):
./Managed Extension Settings/cjpalhdlnbpafiamejdnhcphjbkeiagm/000003.log
./shared_proto_db/metadata/000003.log
./GCM Store/Encryption/000003.log
./Extension State/000002.log
./IndexedDB/https_vk.com_0.indexeddb.leveldb/000003.log
./IndexedDB/chrome-extension_cjpalhdlnbpafiamejdnhcphjbkeiagm_0.indexeddb.leveldb/000003.log
./IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/000003.log
./IndexedDB/https_dl.metabar.ru_0.indexeddb.leveldb/000003.log
./BudgetDatabase/000003.log
./Sync Extension Settings/nggjcpipkefkgldicofgmealjndjnhba/000003.log
./File System/Origins/000003.log
./Session Storage/000009.log
./000021.log
./Platform Notifications/000003.log
./Sync Data/LevelDB/000003.log
./Local Storage/leveldb/000005.log
./Feature Engagement Tracker/AvailabilityDB/000003.log
./Feature Engagement Tracker/EventDB/000003.log
./Site Characteristics Database/000003.log
./Local Extension Settings/cjpalhdlnbpafiamejdnhcphjbkeiagm/000037.log
./Local Extension Settings/cjpalhdlnbpafiamejdnhcphjbkeiagm/lost/000003.log
./Local Extension Settings/moihledlmchhofenpacbhphnbnpakgmo/000002.log
./Service Worker/Database/000003.log
./VideoDecodeStats/000003.log
./data_reduction_proxy_leveldb/000445.log

Аватара пользователя

slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Исключения при удалении файлов (find, rm)

#6

04 фев 2020, 13:43

Когда начинаются сложности подобного рода, часто это признак неправильно сформулированной задачи.
А можно поинтересоваться: ради чего вообще потребовалось "вручную" вычищать часть профиля? И как часто это планируется делать?

no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#7

04 фев 2020, 14:06

slant, в первом посте я указал: P.S. ..., и слетают настройки расширений.
Некоторые расширения хранят свои настройки именно в файлах *.log (скорее последние изменения настроек по сравнению с базовыми).
И вот их не хочется каждый раз восстанавливать.
И производиться эта чистка будет часто, возможно каждый день, ибо она встроена в скрипт архивации настроек браузера.
Полный листинг скрипта для полноты картины привожу ниже:
#!/bin/bash

cd ~/.config/chromium/Default
rm -f *.ldbrm *.localstorage *.localstorage-journal History History-journal
rm -f "History Provider Cache" "Last Session" "Visited Links" "Web Data" "Web Data-journal"
rm -f GPUCache/f_0*
rm -f GPUCache/data_*
rm -Rfd "Service Worker"/*
find -name "*.OLD" -exec rm -rf {} +
find -name "*.old" -exec rm -rf {} +
find -name "*.LOG" -exec rm -rf {} +
#find -name "*.log" -exec rm -rf {} +
find -name "*.ldb" -exec rm -rf {} +
find -name "LOG" -exec rm -rf {} +
find -name "*.bak" -exec rm -rf {} +
find -name "*.backup" -exec rm -rf {} +

cd ~/

arx=~/x-nix/web/Browsers/cc/arx
#IFS=" " read -ra arrTemp <<< $(chromium --version)
#short=$(echo ${arrTemp[1]})
long="$(chromium --version)"
short="${long:9:9}"

cd ~/.config/chromium
7z a -r0 -tzip -mx=1 -y $arx/cc-"${short}"-x230-manjaro-$(date +%Y%m%d).zip Default

Аватара пользователя

Ара Магеддон
Сообщения: 583
Зарегистрирован: 08 дек 2018, 01:08
Решено: 18
Благодарил (а): 37 раз
Поблагодарили: 141 раз

Исключения при удалении файлов (find, rm)

#8

04 фев 2020, 16:57

Занимательная штука этот ваш баш :D
В общем, воть:

Код: Выделить всё

#!/bin/bash

cd ./.config/opera

find . -iname "*.log" -print0 | while read -d $'\0' file
do
    if grep -q "$file" ~/whitelist.txt
    then
        echo оставим "$file"
    else
        echo удалим "$file" 
        # rm -f "$file"
    fi
done
./AutofillStrikeDatabase/000003.log
./opera_autoupdate.log
./shared_proto_db/metadata/000003.log
./Sync Data/LevelDB/000315.log
./Extension Rules/000003.log
удалим ./File System/117/t/Paths/000003.log
удалим ./File System/321/t/Paths/000003.log
удалим ./File System/055/t/Paths/000003.log
удалим ./File System/314/t/Paths/000003.log
удалим ./File System/262/t/Paths/000003.log
удалим ./File System/204/t/Paths/000003.log
удалим ./File System/193/t/Paths/000003.log
удалим ./File System/359/t/Paths/000003.log
удалим ./File System/196/t/Paths/000003.log
удалим ./File System/237/t/Paths/000003.log
удалим ./File System/138/t/Paths/000003.log
удалим ./File System/282/t/Paths/000003.log
удалим ./File System/236/t/Paths/000003.log
удалим ./File System/050/t/Paths/000003.log
удалим ./File System/075/t/Paths/000003.log
удалим ./File System/015/t/Paths/000003.log
оставим ./AutofillStrikeDatabase/000003.log
оставим ./opera_autoupdate.log
оставим ./shared_proto_db/metadata/000003.log
оставим ./Sync Data/LevelDB/000315.log
оставим ./Extension Rules/000003.log
удалим ./VideoDecodeStats/000003.log
удалим ./BudgetDatabase/000003.log
удалим ./GCM Store/000003.log
удалим ./GCM Store/Encryption/000003.log
удалим ./Service Worker/Database/000006.log
удалим ./Local Extension Settings/ollghamalkmmhboihmhoaaobmamehjgn/000003.log
удалим ./001311.log
удалим ./Platform Notifications/000003.log
удалим ./Session Storage/000993.log
Подсмотрел тут: https://stackoverflow.com/a/9612232 (подробно расписано, почему не работают казалось бы более простые варианты)
Заодно подсказку нашел: find -iname - регистронезависимый вариант команды find -name

no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#9

04 фев 2020, 17:14

Ара Магеддон писал(а):
04 фев 2020, 16:57
скрипт
сенька бери мяч!
буду пробовать

no avatar

Автор темы
x230
Сообщения: 2094
Зарегистрирован: 02 сен 2016, 22:07
Решено: 5
Благодарил (а): 406 раз
Поблагодарили: 487 раз
Контактная информация:

Исключения при удалении файлов (find, rm)

#10

08 фев 2020, 10:48

Ара Магеддон писал(а):
04 фев 2020, 16:57
скрипт
Не получилось - Снёс все логи в Хомяке.
Пока реализаовал вариант с удалением искомых каталогов, чисткой и последующим накатом этих каталогов.
Ну не получается у меня исключение/обход каталогов (а желательно - файлов) при удалении мусора!..

Аватара пользователя

Ара Магеддон
Сообщения: 583
Зарегистрирован: 08 дек 2018, 01:08
Решено: 18
Благодарил (а): 37 раз
Поблагодарили: 141 раз

Исключения при удалении файлов (find, rm)

#11

08 фев 2020, 14:51

x230 писал(а):
08 фев 2020, 10:48
Не получилось - Снёс все логи в Хомяке.
Значит, что-то с путями. В том варианте чисто текстовое сравнение используется - то есть запись в файле whitelist должна точно соответствовать тому что видит команда find.

Закрыто

Вернуться в «Консольные плюшки»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей