Così stupido impaziente, ho usato il seguente script sul mio server 19.04 nel tentativo di spostare un gruppo di file video in cartelle con prefissi:
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
Non ho idea di dove sia andato storto, ma invece di spostare i file in cartelle è andato su un output singolare .. quindi:
----> 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 <----
Per fortuna ho interrotto il processo (CTRL + C) non appena ho notato che non stava andando come previsto e non ho attraversato l'intera cartella.
Quindi ora ho quei file A
e C
, che sono meno di un GB, e a quanto pare sono un SINGOLO video.
Ci sono 50 GB non contabilizzati nell'uso totale del disco della cartella stessa, ma lo spazio su disco complessivo del computer è rimasto lo stesso. Mi fai pensare che i file non vengano cancellati?
Qualsiasi aiuto apprezzato, grazie :)
Modifica: i file in realtà sono spariti, rimane solo l'ultimo file da scrivere, è bastato un po 'di tempo per l'aggiornamento delle informazioni sull'uso del disco .. morale della storia, esegui i tuoi script su file finti prima!
mv "$file" "$dir/"
, con un finale /
; quindi se $dir
non esiste, mv
verrà visualizzato l'errore invece di rinominarlo $file
in $dir
. Considera anche mv -i
e mv -n
. E fai sempre qualcosa mkdir -p
prima di muoverti, per buona misura.
A
,B
e così via prima dell'esecuzione dello script? Altrimenti hai appena rinominato i file. Tutti i file i cui nomi sono iniziatia
oA
sono stati rinominatiA
, quindi è sopravvissuto solo l'ultimo file rinominato, gli altri vengono sovrascritti. Chiamare una variabiledir
non crea una directory!