GNU/Linux >> Znalost Linux >  >> Ubuntu

‚přepsané‘ soubory, prostor stále obsazený, jsou ztraceni?

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

Ubuntu
  1. Co jsou soubory .run?

  2. Kde jsou uloženy soubory překladu?

  3. /run Nedostatek místa kvůli Systemd?

  1. Pamatujete si, jaké soubory se otevírají v relaci Gedit?

  2. Jak zkomprimovat více souborů do archivu .xz?

  3. Tajemné .adresáře v domovském adresáři?

  1. mazání souborů, ale místo na disku je stále plné

  2. Rozdělte obrázek dd do více souborů

  3. Proč jsou soubory .so spustitelné?