it-swarm.asia

كيف يمكنني نقل الملفات والدلائل إلى المجلد الأصل في Linux؟

في Linux (Ubuntu) ، كيف يمكنك نقل جميع الملفات والدلائل إلى الدليل الأصل؟

72
nekbaba
تجد . -maxdepth 1 -exec mv {} .. \؛

هذا سينتقل الملفات المخفية كذلك.

سوف تحصل على الرسالة:

mv: لا يمكن أن يتحرك `. إلى `../. ': الجهاز أو المورد مشغول

عندما يحاول نقل . (الدليل الحالي) ولكن هذا لن يسبب أي ضرر.

61
John T

جئت إلى هنا لأنني جديد في هذا الموضوع أيضًا. لسبب ما سبق لم يفعل الخدعة لي. ما فعلته لنقل جميع الملفات من dir إلى أصلها dir هو:

cd to/the/dir
mv * ../
86
Ben Fransen

اكتب هذا في Shell:

mv *.* ..

التي تحرك جميع الملفات مستوى واحد لأعلى.

الحرف * هو حرف بدل. لذا ، فإن *.deb سينقل جميع ملفات .deb ، وسيقوم Zeitgeist.* بنقل Zeitgeist.avi و Zeitgeist.srt مجلد واحد لأعلى ، لأنه ، بالطبع ، يشير .. إلى الدليل الأصل.

لنقل كل شيء بما في ذلك المجلدات ، وما إلى ذلك ، استخدم فقط * بدلاً من *.*

10
Gil

لا يمكن أن يكون أكثر بساطة من:

mv * ../

لنقل الملفات المخفية أيضًا:

mv /path/subfolder/{.,}* /path/ 

mv هو أمر لنقل الملفات ، يعني * جميع الملفات والمجلدات و ../ هو المسار إلى الدليل الأصل.

6
William Edwards

في bash يمكنك استخدام shopt -s dotglob لجعل * تطابق جميع الملفات ونقلها ببساطة عن طريق

shopt -s dotglob; mv * ..

ليس هذا هو الحل الأفضل لأن الإعداد دائم لـ Shell حتى تقوم بتغييره

shopt -u dotglob

لكنني أعتقد أنه من الجيد أن نعرف.

2
maaartinus
find . -maxdepth 2 -type f -exec mv {} .. \;

لقد استخدمت صيغة أعلاه لنقل جميع الملفات من المجلدات الفرعية إلى الأصل.

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

على سبيل المثال.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
1
Bill Bixby

طريقة لا تسبب أي أخطاء وتعمل في كل مرة:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done
1
djhaskin987
find -type f|while read line; do mv $line ${line##*/}; done
0
Adler

إذا افترضنا أن جميع ملفاتك المخفية تبدأ بنقطة متبوعة بحرف أو رقم (كما ينبغي) ، فيمكنك استخدامها

mv * .[A-Za-z0-9]* ..

الجزء .[A-Za-z0-9]* هو التأكد من أنك لا تحاول نقل . أو .. طوله ، مما قد يفشل.

0
ℝaphink

ليست هناك حاجة لتغيير الدلائل. فقط قم بتضمين * في نهاية المسار:

mv /my/folder/child/* /my/folder/

أعلاه فقط يتحرك الملفات غير المخفية. لنقل الملفات المخفية فقط. *

mv /my/folder/child/.* /my/folder/

فوق اثنين يمكن دمجها في أمر واحد:

mv /my/folder/child/{.,}* /my/folder/

راجع أيضًا: كيفية نقل جميع الملفات بما في ذلك الملفات المخفية إلى الدليل الأصل عبر *

0
Shital Shah

من السهل نقل جميع الملفات والمجلدات إلى الدليل الأصل في Linux.

انتقل إلى هذا المجلد واستخدم هذا الأمر:

mv * /the full path

على سبيل المثال ، إذا كانت الملفات والمجلدات كما يلي:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

انتقل إلى هذا المجلد عبر القرص المضغوط:

cd /home/abcuser/test
mv * /home/abcuser

جميع الملفات والمجلدات الخاصة بك سوف تنتقل إلى مجلد abcuser (الدليل الأصل).

0
Abhishek