add recursiv find

This commit is contained in:
2025-02-19 10:07:20 +01:00
parent 108ae634d8
commit 5fc705d6a6

View File

@@ -41,73 +41,68 @@ extract_with_fallback() {
return 1 return 1
} }
# Funktion zum Packen mit 7z (für RAR und CBZ) # Funktion zum Konvertieren von CBR nach CBZ
pack_with_7z() { convert_cbr_to_cbz() {
local output_file=$1 local file=$1
local input_dir=$2 local base_name="${file%.cbr}"
local temp_dir="${base_name}_tmp"
7z a -r "$output_file" "$input_dir"/* > /dev/null 2>&1 mkdir -p "$temp_dir"
if [[ $? -eq 0 ]]; then extract_with_fallback "$file" "$temp_dir"
return 0 if [[ $? -ne 0 ]]; then
else echo "Fehler beim Entpacken von $file"
echo "Fehler: Erstellen von $output_file fehlgeschlagen." rm -rf "$temp_dir"
return 1 return
fi fi
}
# Erstellen des neuen CBZ-Archivs
# Abhängig vom Modus die Konvertierung durchführen zip -r "${base_name}.cbz" "$temp_dir" > /dev/null
case $mode in
cbz)
for cbr_file in "$directory"/*.cbr; do
if [[ -f "$cbr_file" ]]; then
base_name="${cbr_file%.cbr}"
temp_dir=$(mktemp -d)
echo "Entpacke $cbr_file ..."
if extract_with_fallback "$cbr_file" "$temp_dir"; then
echo "Erstelle ${base_name}.cbz ..."
(cd "$temp_dir" && zip -r "${base_name}.cbz" ./* > /dev/null 2>&1)
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
echo "Lösche Originaldatei: $cbr_file" rm "$file"
rm "$cbr_file" echo "Erfolgreich konvertiert: $file -> ${base_name}.cbz"
mv "${base_name}.cbz" "$directory/"
else else
echo "Fehler beim Erstellen von ${base_name}.cbz" echo "Fehler beim Erstellen von ${base_name}.cbz"
fi fi
else
echo "Fehler beim Entpacken von $cbr_file"
fi
rm -rf "$temp_dir"
fi
done
;;
cbr)
for cbz_file in "$directory"/*.cbz; do
if [[ -f "$cbz_file" ]]; then
base_name="${cbz_file%.cbz}"
temp_dir=$(mktemp -d)
echo "Entpacke $cbz_file ..." rm -rf "$temp_dir"
unzip -q "$cbz_file" -d "$temp_dir/" }
# Funktion zum Konvertieren von CBZ nach CBR
convert_cbz_to_cbr() {
local file=$1
local base_name="${file%.cbz}"
local temp_dir="${base_name}_tmp"
mkdir -p "$temp_dir"
unzip -q "$file" -d "$temp_dir"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Entpacken von $file"
rm -rf "$temp_dir"
return
fi
# Erstellen des neuen CBR-Archivs
rar a -r "${base_name}.cbr" "$temp_dir" > /dev/null
if [[ $? -eq 0 ]]; then if [[ $? -eq 0 ]]; then
echo "Erstelle ${base_name}.cbr ..." rm "$file"
if pack_with_7z "${base_name}.cbr" "$temp_dir"; then echo "Erfolgreich konvertiert: $file -> ${base_name}.cbr"
echo "Lösche Originaldatei: $cbz_file"
rm "$cbz_file"
mv "${base_name}.cbr" "$directory/"
else else
echo "Fehler beim Erstellen von ${base_name}.cbr" echo "Fehler beim Erstellen von ${base_name}.cbr"
fi fi
else
echo "Fehler beim Entpacken von $cbz_file"
fi
rm -rf "$temp_dir" rm -rf "$temp_dir"
fi }
# Dateien je nach Modus rekursiv finden und konvertieren
if [[ "$mode" == "cbz" ]]; then
find "$directory" -type f -name "*.cbr" | while read -r file; do
convert_cbr_to_cbz "$file"
done done
;; elif [[ "$mode" == "cbr" ]]; then
*) find "$directory" -type f -name "*.cbz" | while read -r file; do
echo "Ungültiger Modus. Bitte 'cbz' oder 'cbr' verwenden." convert_cbz_to_cbr "$file"
done
else
echo "Fehler: Ungültiger Modus. Verwenden Sie 'cbz' oder 'cbr'."
exit 1 exit 1
;; fi
esac