Tak głupie niecierpliwe, że użyłem następującego skryptu na moim serwerze 19.04, próbując przenieść kilka plików wideo do folderów z prefiksami:
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
Nie mam pojęcia, gdzie poszło nie tak, ale zamiast przenieść pliki do folderów, przeszedł do pojedynczego wyjścia .. więc:
----> 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 szczęście zatrzymałem proces (CTRL + C), gdy tylko zauważyłem, że nie idzie zgodnie z przeznaczeniem i nie przejrzałem całego folderu.
Więc teraz mam te pliki A
i C
, które są mniej niż GB, i wygląda na to są wideo pojedynczym.
W całkowitym wykorzystaniu dysku przez sam folder nie jest uwzględnione 50 Gb, ale ogólna przestrzeń dyskowa komputera pozostała taka sama. Sprawiasz, że myślę, że pliki nie zostały usunięte?
Każda pomoc doceniona, dziękuję :)
Edycja: pliki faktycznie zniknęły, pozostaje tylko ostatni plik do zapisania, wystarczyło trochę czasu, aby zaktualizować informacje o użyciu dysku.
mv "$file" "$dir/"
, z końcem /
; to jeśli $dir
nie istnieje, mv
wystąpi błąd zamiast zmiany nazwy $file
na $dir
. Weź również pod uwagę mv -i
i mv -n
. I zawsze rób to mkdir -p
przed przeprowadzką, na wszelki wypadek.
A
,B
i tak dalej istniała przed uruchomieniem skryptu? Jeśli nie, po prostu zmieniłeś nazwy plików. Wszystkie pliki, których nazwy zaczynały się oda
lub których nazwaA
została zmienionaA
, więc przetrwał tylko ostatni plik o zmienionej nazwie, pozostałe są zastępowane. Wywołanie zmiennejdir
nie tworzy katalogu!