dovolim si postnuty skript forknout ;-)
#!/bin/bash
# Nastavte cestu, kde chcete hledat soubory, pokud jste nevolal skript s parametrem cesty
SEARCH_DIR="${1:-/cesta/k/hledani}"
# Nastavte názvy výstupních souborů
OUTPUT_FILENAMES="vystup_nazvy_souboru.txt"
OUTPUT_SIZES_AND_FILENAMES="vystup_velikosti_a_nazvy_souboru.txt"
OUTPUT_CSV="vystup_velikosti_a_nazvy_a_adresare.csv"
# Odstraňte existující výstupní soubory
rm -f "${OUTPUT_FILENAMES}" "${OUTPUT_SIZES_AND_FILENAMES}" "${OUTPUT_CSV}"
# Najděte soubory s velikostí mezi 10 a 20 MB
while read file; do
# Získejte název souboru
filename="${file##*/}"
# Získejte adresář souboru
dirname="${file%/*}"
# Získejte velikost souboru v bytech
size=$(stat -c "%s" "${file}")
# Počítejte celkovou velikost souborů
total_size=$(( ${total_size} + ${size} ))
# Přidejte název souboru do prvního souboru
echo "${filename}" >> "${OUTPUT_FILENAMES}"
# Přidejte velikost a název souboru do druhého souboru
echo "${size} ${filename}" >> "${OUTPUT_SIZES_AND_FILENAMES}"
# Přidejte velikost, název souboru, název adresáře do csv
echo "${size};${filename};${dirname}" >> ${OUTPUT_CSV}
done < <(find "${SEARCH_DIR}" -type f -size +10M -size -20M)
# Celkovou velikost nalezených souborů přidejte na konec druhého souboru
echo "Celkova velikost: ${total_size}" >> "${OUTPUT_SIZES_AND_FILENAMES}"
Zmeny:
- moznost volat "skript /cesta/k/hledani"
- nedavat while za pipe, ale posilat do done (zjednoduseni a usetri se ruzne problemy)
- vystup dava i do csv vcetne nazvu adresaru
- pro (nejen)prehlednost nazvy promenych uzavrene v {}
- celkovou velikost souborů pocitat rovnou v smycce