Tak hloupý netrpělivý jsem použil následující skript na svém serveru 19.04 ve snaze přesunout hromadu video souborů do složek s předponami:
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
Nemám ponětí, kde se stala chyba, ale místo přesunu souborů do složek to šlo do singulárního výstupu.. takže :
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
Naštěstí jsem proces zastavil (CTRL+C), jakmile jsem si všiml, že to nejde podle plánu a neprošel jsem celou složku.
Takže teď mám ty soubory A
a C
, které mají méně než Gb a podle vzhledu jde o JEDINÉ video.
V celkovém využití disku samotnou složkou je nezapočítáno 50 GB, ale celkový prostor na disku počítače zůstal stejný.
Připadá mi, že soubory nebyly smazány?
Oceňujeme jakoukoli pomoc, děkujeme 🙂
Upravit:soubory jsou ve skutečnosti pryč, zbývá jen poslední soubor k zápisu, trvalo jen nějakou dobu, než se aktualizovaly informace o použití disku.. morálka příběhu, spusťte skripty na falešných souborech předtím !
Přijatá odpověď:
Myslím, že toto je problém:Měli jste vytvořit adresáře A, B, C … Z. Pokud jste to udělali, mv
příkaz by měl přesunout soubory do těchto adresářů.
Ale pokud ne, mv
příkaz přesune soubory do souborů s těmito názvy, A, B, C … a myslím, že jste to udělali.
Aby byl shellscript bezpečnější, měli byste mu vytvořit adresáře (pokud tam ještě nejsou) před zahájením přesunu.
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
for dir in "${dirs[@]}"
do
mkdir -p $dir
done
Pokud chcete, aby byly věci ještě bezpečnější, můžete také použít mv
pomocí -i
možnost
-i, --interactive
prompt before overwrite