ฉันมีโฟลเดอร์ A ที่มี folderB ที่มีไฟล์จำนวนมาก ฉันต้องการกำจัดโฟลเดอร์ B แต่ไม่ใช่เนื้อหา ฉันต้องการให้เนื้อหาเหล่านั้นอยู่ในโฟลเดอร์ A ฉันจะทำสิ่งนี้สำเร็จได้อย่างไรใน commandline?
ฉันมีโฟลเดอร์ A ที่มี folderB ที่มีไฟล์จำนวนมาก ฉันต้องการกำจัดโฟลเดอร์ B แต่ไม่ใช่เนื้อหา ฉันต้องการให้เนื้อหาเหล่านั้นอยู่ในโฟลเดอร์ A ฉันจะทำสิ่งนี้สำเร็จได้อย่างไรใน commandline?
คำตอบ:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .
จะย้ายพวกเขาเช่นกัน @NewLinux ผู้ใช้จุดในคำถามของคุณเป็นนามแฝงสำหรับไดเรกทอรีทำงาน (ในกรณีนี้ folderA)
folderB/folderB
มีอยู่ดังนั้นโปรดใช้ในสคริปต์
folderB
มีจำนวนบ้า คุณจะเห็นเพราะการใช้งานของbash: /bin/mv: Argument list too long
*
หากเป็นกรณีที่ใช้mv
ร่วมกับfind
ตามที่ระบุโดย @amphetamachine หรือกับfor loop
คำตอบที่รวดเร็ว:
cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB
คำตอบที่ยากต่อรหัส:
cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"