Страница 1 из 1

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

Добавлено: 03 фев 2020, 22:36
x230
Задача - удалить логи и т.п. в каталоге ~/.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:

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

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

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

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

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

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

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

Добавлено: 04 фев 2020, 12:25
x230
Пробую такую строку:
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

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

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

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

Добавлено: 04 фев 2020, 14:06
x230
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

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

Добавлено: 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

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

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

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

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

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

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