คุณสามารถค้นหาชุดโซลูชันที่ครอบคลุมเกี่ยวกับเรื่องนี้ได้ในคำตอบของ UNIX & Linux ที่ว่าคุณจะย้ายไฟล์ทั้งหมด (รวมถึงที่ซ่อนอยู่) จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีหนึ่งได้อย่างไร . แสดงโซลูชันใน Bash, zsh, ksh93, standard (POSIX) sh เป็นต้น
คุณสามารถใช้สองคำสั่งนี้ร่วมกัน:
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
หรือทั้งหมดรวมกัน ( ขอบคุณ pfnuesel ):
mv /path/subfolder/{.,}* /path/
ซึ่งขยายเป็น:
mv /path/subfolder/* /path/subfolder/.* /path/
(ตัวอย่าง: echo a{.,}b
ขยายเป็นa.b ab
)
โปรดทราบว่านี่จะแสดงคำเตือนสองสามคำ:
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
เพียงแค่เพิกเฉยต่อสิ่งเหล่านี้: สิ่งนี้เกิดขึ้นเนื่องจาก/path/subfolder/{.,}*
ขยายไปยัง/path/subfolder/.
และ/path/subfolder/..
ซึ่งคือไดเร็กทอรีและไดเร็กทอรีหลัก (ดูWhat do“.” และ“ .. ” หมายถึงเมื่ออยู่ในโฟลเดอร์? )
หากคุณต้องการเพียงแค่คัดลอกคุณสามารถใช้เพียง:
cp -r /path/subfolder/. /path/
# ^
# note the dot!
การดำเนินการนี้จะคัดลอกไฟล์ทั้งหมดทั้งไฟล์ปกติและไฟล์ที่ซ่อนอยู่เนื่องจาก/path/subfolder/.
ขยายเป็น "ทุกอย่างจากไดเร็กทอรีนี้" (ที่มา: จะคัดลอกด้วย cp เพื่อรวมไฟล์ที่ซ่อนอยู่และไดเร็กทอรีที่ซ่อนอยู่และเนื้อหาได้อย่างไร )
cp -r /path/to/source/. /destination