तो गूंगा मुझे ढाल के साथ फ़ोल्डर में वीडियो फ़ाइलों का एक गुच्छा ले जाने के प्रयास में मेरे 19.04 सर्वर पर निम्न स्क्रिप्ट का उपयोग करता है:
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
कोई सुराग नहीं जहां यह गलत हुआ, लेकिन फाइलों को फ़ोल्डर्स में ले जाने के बजाय यह एक विलक्षण आउटपुट में चला गया .. इसलिए:
----> 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 <----
मैंने सौभाग्य से इस प्रक्रिया को बंद कर दिया (CTRL + C) जैसे ही मैंने देखा कि यह इरादा नहीं था और पूरे फ़ोल्डर में नहीं गया।
तो अब मैं उन फ़ाइलों को मिल गया है A
और C
है, जो एक जीबी की तुलना में कम कर रहे हैं, और यह दिखता द्वारा एक वीडियो है।
फ़ोल्डर के कुल डिस्क उपयोग के लिए 50Gb बेहिसाब हैं, लेकिन कंप्यूटर का समग्र डिस्क स्थान एक ही रहा है। मुझे लगता है कि फ़ाइलें नष्ट नहीं कर रहे हैं?
किसी भी मदद की सराहना की, धन्यवाद :)
संपादित करें: फ़ाइलें वास्तव में चली गई हैं, केवल अंतिम फ़ाइल लिखी जानी बाकी है, डिस्क को अद्यतन करने के लिए जानकारी का उपयोग करने के लिए कुछ समय लग गया था .. कहानी का नैतिक, इससे पहले अपनी फाइलों को नकली फाइलों पर चलाएं!
mv "$file" "$dir/"
एक अनुगामी के साथ उपयोग करें /
; तो अगर $dir
मौजूद नहीं है, mv
नाम बदलने के बजाय त्रुटि जाएगा $file
करने के लिए $dir
। भी विचार mv -i
और mv -n
। और हमेशा एक mkdir -p
उपाय करने से पहले, अच्छे उपाय के लिए।
A
,B
इत्यादि? यदि आप फ़ाइलों का नाम नहीं बदला है। वे सभी फाइलें जिनका नाम शुरू हुआ थाa
या जिनका नामA
बदल दिया गया थाA
, इसलिए केवल अंतिम नामांकित फ़ाइल बच गई, अन्य को अधिलेखित कर दिया गया। एक चर को कॉल करने केdir
लिए एक निर्देशिका नहीं बनाता है!