Vì vậy, tôi không kiên nhẫn sử dụng tập lệnh sau trên máy chủ 19.04 của mình để cố gắng di chuyển một loạt các tệp video vào các thư mục có tiền tố:
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
Không biết nó đã sai ở đâu, nhưng thay vì di chuyển các tệp vào các thư mục, nó đã chuyển sang một đầu ra số ít .. vì vậy:
----> 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 <----
Tôi may mắn đã dừng quá trình (CTRL + C) ngay khi tôi nhận thấy nó không diễn ra như dự định và không đi qua toàn bộ thư mục.
Vì vậy, bây giờ tôi đã có những tệp đó A
và C
, ít hơn một Gb, và bởi vẻ ngoài của nó là một video SINGLE.
Có 50Gb chưa được tính trong tổng số lần sử dụng đĩa của thư mục, nhưng không gian đĩa chung của máy tính vẫn giữ nguyên. Làm tôi nghĩ rằng các tập tin không bị xóa?
Bất kỳ trợ giúp đánh giá cao, cảm ơn :)
Chỉnh sửa: các tệp thực sự đã biến mất, chỉ còn lại tệp cuối cùng được ghi lại, tất cả chỉ mất một thời gian để thông tin sử dụng đĩa cập nhật .. đạo đức của câu chuyện, chạy tập lệnh của bạn trên các tệp giả trước đó!
mv "$file" "$dir/"
, với dấu vết /
; sau đó nếu $dir
không tồn tại, mv
sẽ lỗi thay vì đổi tên $file
thành $dir
. Cũng xem xét mv -i
và mv -n
. Và luôn luôn làm một mkdir -p
trước khi di chuyển, cho các biện pháp tốt.
A
,B
và như vậy đã tồn tại trước khi chạy tập lệnh? Nếu không bạn chỉ đổi tên các tập tin. Tất cả các tệp có tên bắt đầu bằnga
hoặcA
đã được đổi tên thànhA
, vì vậy chỉ có tệp được đổi tên cuối cùng còn tồn tại, các tệp khác được ghi đè. Để gọi một biếndir
không tạo một thư mục!