Tips en Trucs 2016

Willekeurige selectie bestanden

Onlangs moest ik uit een map met bijna drieduizend bestanden tien willekeurige bestanden selecteren. Deze bestanden waren niet in mappen georganiseerd, maar kregen een naam waarin duidelijk een organisatie zat. Zoals je dit veel bij muziekbestanden ziet (Artiest - Album - Song.mp3). Zo'n organisatie van bestanden zie je meer en meer (ook door de opkomst van de Cloud) en heeft als grote voordeel dat je veel eenvoudiger kunt zoeken naar een bepaald bestand. Daarenboven moet je geen koppelingen meer gebruiken voor bestanden die thuishoren in meerdere categorieën. Een gelijkaardige manier van organiseren, vindt je vandaag ook terug in moderne mailprogramma's waar de mails automatisch in verschillende groepen worden ingedeeld (Sociale media, Werk, Privé, Reclame, enz), hoewel de mails op dezelfde manier binnenkomen en opgeslagen worden.

Het script

Dit script maakt gebruik van jokers in opdrachten. Dit kan ravages aanrichten op uw harde schijf, m.a.w. test deze opdrachten grondig voor je ze het echte werk laat uitvoeren. Zeker in combinatie met verwijder opdrachten (rm). Test opdrachten met jokers bijvoorbeeld met de ls opdracht die enkel toont welke bestanden er in aanmerking komen. Testen kan je ook met behulp van de echo opdracht waarmee te tekst op het scherm kunt plaatsen. Opdrachtregels kan je uitschakelen door er een commentaarregel van de maken (# voor plaatsen).

#!/bin/bash
# _Shuffle.sh
# Selecteert tien bestanden uit de map waarin dit script staat
# en kopieert deze naar de map Shuffle, een submap van de map waarin dit script staat.

# Het script plaatsen we in dezelfde map als de te doorzoeken map met bestanden

# Met de volgende opdracht achterhalen we de map waarin de te doorzoeken bestanden (map waarin het script staat) staan
MY_PATH="`dirname \"$0\"`"
# Maak een map waarin de willekeurig geselecteerde bestanden naar gekopieëerd zullen worden
mkdir "$MY_PATH/Shuffle"
# Deze uitgeschakelde regel gebruik je om te testen voor je de echte verwijderopdracht laat uitvoeren
# ls "$MY_PATH/Shuffle/"*.mp3
# Wis de vorige willekeurige selectie
rm "$MY_PATH/Shuffle/"*.mp3
# Maak een lijst met alle bestanden in de map van het script (ls)
# Sorteer deze lijst daarna willekeurig (sort)
# Selecteer daarna uit de willekeurig geselecteerde bestanden de laatste tien bestanden (tail)
ls "$MY_PATH/"*.mp3 |sort -R |tail -10 |while read file; do
    # Controleer of elk bestand wel een bestand is
    if [ -f "$file" ]; then
        # Deze uitgeschakelde regel gebruik je om te testen voor je de echte kopieeropdracht laat uitvoeren
        # echo "$file > `dirname \"$file\"`/Shuffle/`basename \"$file\"`"
        # Kopieër het willekeurige bestand naar de doelmap
        cp "$file" "`dirname \"$file\"`/Shuffle/`basename \"$file\"`"
    fi
done

Bij het uitvoeren van het script kan je volgende meldingen krijgen:

dany@main:~> sh Documenten/Muziek/_Shuffle.sh 
rm: kan ‘Documenten/Muziek/Shuffle/*.mp3’ niet verwijderen: Bestand of map bestaat niet

Deze melding krijg je als je het script voor de eerste keer start of er geen bestanden in de Shuffle map staan.

dany@main:~> sh Documenten/Muziek/_Shuffle.sh 
mkdir: kan map ‘Documenten/Muziek/Shuffle’ niet aanmaken: Bestand bestaat al

Deze melding krijg je als je als je het script als eens hebt uitgevoerd of als de Shuffle map al bestaat. Dit kan je oplossen door de map enkel aan te maken indien deze niet bestaat. Pas het script daarvoor zelf aan en breidt het uit met uw eigen wensen. Voor minder computervaardige mensen, kan je zoals vorige week beschreven, dit script opnemen in het Menu Toepassingen.

AR8161 Gigabit Ethernet netwerkkaart probleem

Wie een computer heeft met een Qualcomm Atheros AR8161 Gigabit Ethernet netwerkkaart heeft een probleem met recente kernels. M.a.w. alle recente distributies hebben er last van. De netwerkverbinding valt na enkele ogenblikken uit (wordt zeer traag). Tot er een oplossing is (nieuwe kernel update verschijnt) kan je het probleem in openSUSE Leap 42.1 als volgt oplossen:

Ik heb sedert de aanpassing geen netwerkverbindingsproblemen meer gehad.