ย้ายเนื้อหาของโฟลเดอร์ไปยังโฟลเดอร์หลัก - Linux Commandline


18

ฉันมีโฟลเดอร์ A ที่มี folderB ที่มีไฟล์จำนวนมาก ฉันต้องการกำจัดโฟลเดอร์ B แต่ไม่ใช่เนื้อหา ฉันต้องการให้เนื้อหาเหล่านั้นอยู่ในโฟลเดอร์ A ฉันจะทำสิ่งนี้สำเร็จได้อย่างไรใน commandline?

คำตอบ:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
mv folderB / * ? จุดคืออะไร
NewLinux ผู้ใช้

8
ระวังไฟล์ dot (ไฟล์ที่ชื่อขึ้นต้นด้วย) เนื่องจากจะไม่รวมไฟล์เหล่านั้น สนใจที่mv folderB/.* .จะย้ายพวกเขาเช่นกัน @NewLinux ผู้ใช้จุดในคำถามของคุณเป็นนามแฝงสำหรับไดเรกทอรีทำงาน (ในกรณีนี้ folderA)
Brian

1
สิ่งนี้จะล้มเหลวหากfolderB/folderBมีอยู่ดังนั้นโปรดใช้ในสคริปต์
ฟิลิปปินส์

1
สิ่งนี้จะล้มเหลวหากไฟล์folderBมีจำนวนบ้า คุณจะเห็นเพราะการใช้งานของbash: /bin/mv: Argument list too long *หากเป็นกรณีที่ใช้mvร่วมกับfindตามที่ระบุโดย @amphetamachine หรือกับfor loop
Javier de la Rosa

2

คำตอบที่รวดเร็ว:

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"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.