Страница 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
не осилил...

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

Исключения при удалении файлов (find, rm)
Добавлено: 04 фев 2020, 07:29
x230
Про такое я подумал почти сразу. Но действительно - "костыль"!
А вот это буду попробовать,

Исключения при удалении файлов (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
Ара Магеддон
Занимательная штука этот ваш баш

В общем, воть:
Код: Выделить всё
#!/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
сенька бери мяч!
буду пробовать
Исключения при удалении файлов (find, rm)
Добавлено: 08 фев 2020, 10:48
x230
Не получилось - Снёс все логи в Хомяке.
Пока реализаовал вариант с удалением искомых каталогов, чисткой и последующим накатом этих каталогов.
Ну не получается у меня
исключение/обход каталогов (а желательно - файлов) при удалении мусора!..
Исключения при удалении файлов (find, rm)
Добавлено: 08 фев 2020, 14:51
Ара Магеддон
x230 писал(а): ↑08 фев 2020, 10:48
Не получилось - Снёс все логи в Хомяке.
Значит, что-то с путями. В том варианте чисто текстовое сравнение используется - то есть запись в файле whitelist должна точно соответствовать тому что видит команда find.