سؤال كيف أقوم بنقل جميع الملفات من مجلد إلى آخر باستخدام سطر الأوامر؟


أود أن أعرف كيف يمكنني نقل جميع الملفات من مجلد إلى مجلد آخر باستخدام سطر الأوامر.

لنفترض أنني في مجلد التنزيلات الخاص بي وهناك 100 ملف أرغب في نقلها إلى مجلد مقاطع الفيديو الخاصة بي ، دون الحاجة إلى كتابة كل أسماء الملفات.


167
2017-08-06 15:14


الأصل


أنت تسأل عن التحرك files لكن الناس يظهرون لك كيفية التحرك ليس فقط files لكن foldersكذلك. هل هذا جيد؟ - Askar


الأجوبة:


افتح محطة طرفية وتنفيذ هذا الأمر:

mv  -v ~/Downloads/* ~/Videos/

سيحرك كل الملفات والمجلدات من مجلد التنزيلات إلى مجلد الفيديو.


لنقل جميع الملفات ، وليس المجلدات: 

إذا كنت مهتمًا بنقل كافة الملفات (وليس المجلدات) من مجلد التنزيلات إلى مجلد Videos ، فاستخدم هذا الأمر

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

لنقل الملفات فقط من مجلدات التنزيل ، ولكن ليس من المجلدات الفرعية:

إذا كنت ترغب في نقل جميع الملفات من مجلد التنزيلات ، ولكن ليس أي ملفات داخل مجلدات في مجلد التنزيل ، فاستخدم هذا الأمر:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

هنا، -maxdepth الخيار يحدد كيف يجب أن يجرب البحث العميق ، 1 يعني ، فقط الدليل المحدد في الأمر find. يمكنك محاولة استخدام 2، 3 أيضا لاختبار.

انظر أوبونتو العثور على manpage للحصول على شرح مفصل


235
2017-08-06 15:18



يمكنك استخدام mv بمفردها لتحريك دليل كامل إلى مجلد آخر: mv folder ~ / Documents - JohnMerlino
لمعلوماتك FYI أعتقد أن الأمر الأول ("mv -v ~ / Downloads / * ~ / Videos /") لن ينقل ملفات النقطة. - Mark Doliner
نعم ، لن تحرك الملفات - Anwar
ملحوظة. ك -print0 | xargs -0 mv -t ~/Videos يمكن أن يكون أكثر كفاءة مع -exec mv -t ~/Videos \{\} \+ :-) - artfulrobot
نعم هذا صحيح. كنت مبتدئًا عندما أجبت على السؤال - Anwar


mv ~/Downloads/* ~/Videos

سيقوم بنقل كافة الملفات بما في ذلك المجلدات الفرعية في الدليل الذي تريده mv. أذا أردت cp (نسخة) أو rm (إزالة) سوف تحتاج إلى -r (متكرر) الخيار لتضمين المجلدات الفرعية.


17
2017-12-08 03:24



لا يحتوي الأمر mv على خيار -R (Ubuntu 14.04). - Mark Doliner
تضمين التغريدة ردًا علىMarkDoliner mv لا يحتاج إلى خيار تعاودي لتضمين المجلدات الفرعية. يمكن للمرء استخدامه أيضا لإعادة تسمية. - AliNâ
لم أكن بحاجة *. نفس الشيء حدث دون استخدام النجم. - MycrofD
لا يعمل ~ / في بادئة أسماء المجلدات دائمًا (لا يعمل على bash و git atleast) - Krish Munot
سيعطي هذا الحل خطأ إذا كان الدليل المصدر فارغًا. - Pierre Thibault


من الممكن باستخدام rsync، فمثلا:

rsync -vau --remove-source-files src/ dst/

أين:

-v، --verbose: زيادة الإسهاب.

-a، --archive: وضع الأرشيف يساوي -rlptgoD (لا -H، -A، -X).

-u، --update: تخطي الملفات التي هي أحدث على المتلقي.

--remove-source-files        هذا يخبر rsync لإزالة من جانب إرسال الملفات (بمعنى غير الدلائل) التي هي جزء من عملية النقل وتم تكرارها بنجاح على جانب المتلقي.

إذا كنت تمتلك امتيازات الجذر ، فستجد البادئة بها sudo لتجاوز مشكلات الأذونات المحتملة.


5
2018-06-06 15:08



تحذير! الخيار -delete-after كما هو موضح لا يعمل بالطريقة التي قد تتوقعها. لا يحذف مصدر الملفات بعد النسخة الناجحة ... IT يحذف جميع الملفات المتبقية / الأخرى في الوجهة. (كما لاحظتkenorb ... لكنني لم أقرأ بعناية كافية! DOH) - Jay Marm


استعمال

mv -v ~/rootfolder/branch/* ~/rootfolder

آمل أن يساعد هذا. لأنني كنت أشعر بنفس الألم وأهدرت الكثير من الوقت في إصلاح خطأي.


2
2018-01-25 23:06





للحالة البسيطة:

mv ~/Downloads/* ~/Videos

إذا كنت تريد نقل ملفات النقطة أيضًا ، فاضبط الخيار dotglob خيار قذيفة.

shopt -s dotglob
mv ~/Downloads/* ~/Videos

هذا يترك الخيار shell تعيين.

لاستخدام dotglob مرة واحدة ، قم بتشغيل الأوامر في subshell:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

2
2018-01-22 10:16





  1. انتقل إلى سطر الأوامر واذهب إلى الدليل الذي تريد نقله إليه cd folderNamehere
  2. اكتب pwd. سيؤدي هذا إلى طباعة الدليل الذي تريد نقله أيضًا.
  3. ثم قم بتغيير إلى الدليل حيث توجد كافة الملفات cd folderNamehere
  4. الآن لنقل كل نوع الملفات mv *.* typeAnswerFromStep2here

سيؤدي ذلك إلى نقل جميع الملفات من هذا الدليل إلى الآخر.


1
2017-09-12 12:07



هذا لن تطابق الملفات دون أي تمديد. على سبيل المثال إذا كان المجلد يحتوي على الملفات: foo.txt، bar. و bar على حد سواء bar. و bar لن يتم نقلها. عن طريق * بدلا من *.* يعتني بذلك. لكن في كلتا الحالتين ، الملفات المخفية مثل: .foobar لن يتم نقلها. - Dan


لنقل دليل مع أو بدون محتوى لاسمه الجديد تمامًا مثل الطريقة التي تستخدم بها mv الأمر لإعادة تسمية ملف:

mv -T dir1 dir2

أين:

  • -T يعامل الوجهة كملف عادي
  • dir1 هو الاسم الأصلي للدليل
  • dir2 هو الاسم الجديد للدليل

NB: dir2 لا يجب أن يوجد

آمل أن يوفر هذا شخصًا كثيرًا من الوقت ، باعتباره مستجدًا ، قبل ذلك ، سأقوم بإنشاء دليل بالاسم الجديد ثم نقل محتويات الدليل إلى الدليل الذي تم إنشاؤه مسبقًا.

استخدم للدلائل الفرعية

يفيد هذا الأمر عند حفظ العديد من الملفات في مجلد فرعي من الدليل الهدف ، أي: Downloads/mp4. في هذا المثال ، على التوالي mv -T Downloads/mp4 Videos سوف يؤدي إلى mp4 يجري الفرعي إزالة ويتم نقل جميع الملفات الموجودة في الداخل إلى مجلد مقاطع الفيديو.


0
2017-12-09 07:33



+1 بسبب اختبار العمل في Xubuntu 14.04. لقد أضفت مثالا في هذا الجواب لإظهار أن هذا الأمر سوف يتسبب في dir1 ليتم إزالتها. وإلى جانب هذا الاحتياط ، فقد لاحظت هذه الإجابة شيئًا جيدًا للاستخدام اليومي. - clearkimura
"لنقل دليل مع أو بدون محتوى إلى اسمه الجديد" كيف يمكنك نقل دليل ... إلى اسم؟ أن لا معنى له. "-T يتعامل مع الوجهة كملف عادي" كيف يمكن أن تكون الوجهة ملفًا؟ هل تقصد الدليل؟ - Monica Heddneck
مثل إعادة تسمية ملف إلى اسمه الجديد كما تفعل مع شيء مثل mv fileA fileB لكن ال -T علم في هذه الحالة يعامل الوجهة / الدليل كملف ويعيد تسميته. - Feyisayo Sonubi


جربها

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-اكتب مع الوسيطة -نوع يمكنك تحديد نوع الملف.على هذا البيان الذي يعني متوسط ​​file.if باستخدام -d وهذا يعني الدليل.

-أنا اسم: تستخدم الطريقة الأكثر شيوعًا وضوحًا للبحث عن ملف وسيطة itsname.if إذا لم تكن متأكدًا من حساسية الحالة الخاصة به ، فيمكنك استخدام الوسيطة -iname

mv {} وأخيرًا تحديد الدليل المستهدف ثم نقل الملفات الموجودة باستخدام الوسيطة mv {}


0
2018-04-01 16:54