ฉันได้รวมโฟลเดอร์ไว้ในโฟลเดอร์A
แล้ว A
ฉันต้องการที่จะย้ายไฟล์จากโฟลเดอร์เหล่านั้นทั้งหมด
หรือ
ฉันต้องการตัดไฟล์ทั้งหมดจากโฟลเดอร์ย่อยและวางในโฟลเดอร์หลัก
ทำอย่างไร
mv */* .
จะไม่ย้ายไฟล์จากโฟลเดอร์ย่อย
ฉันได้รวมโฟลเดอร์ไว้ในโฟลเดอร์A
แล้ว A
ฉันต้องการที่จะย้ายไฟล์จากโฟลเดอร์เหล่านั้นทั้งหมด
หรือ
ฉันต้องการตัดไฟล์ทั้งหมดจากโฟลเดอร์ย่อยและวางในโฟลเดอร์หลัก
ทำอย่างไร
mv */* .
จะไม่ย้ายไฟล์จากโฟลเดอร์ย่อย
คำตอบ:
ไปที่A
ไดเรกทอรีของคุณและเรียกใช้
find . -mindepth 2 -type f -print -exec mv {} . \;
ซึ่งหมายความว่า "ค้นหาไฟล์ทั้งหมดในไดเรกทอรีนี้และไดเรกทอรีย่อยและดำเนินการ mv กับไดเรกทอรีเป้าหมายสำหรับแต่ละไฟล์ที่พบเพื่อย้ายไฟล์ไปยังไดเรกทอรีปัจจุบัน
find
คุณสามารถเพิ่มความสง่างามและไม่ใช้mv
กระบวนการสำหรับแต่ละไฟล์:find A -mindepth 2 -type f -exec mv -t A \{\} +
find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
คุณสามารถสร้างไฟล์และตั้งชื่อมันว่า "cutme" (เพื่อสร้างไฟล์ชื่อ cutme ในประเภทเทอร์มินัลnano cutme
หากต้องการบันทึกให้กด CTRL + X จากนั้นกด ENTER) ตัวอย่างเช่นและวางต่อไปนี้โดยสมมติว่า:
find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;
หมายเหตุชื่อcutmeภายในบรรทัด ควรเหมือนกับสคริปต์ที่คุณจะเรียกใช้
หลังจากสร้างไฟล์และวางบรรทัดด้านบนให้รันต่อไปนี้ในโฟลเดอร์เดียวกับสคริปต์:
chmod +x cutme
. นี้จะให้ไฟล์ใหม่ของคุณ "ปฏิบัติการ" ./cutme
ธงเพื่อให้คุณสามารถดำเนินการได้เช่นนี้
mv */* .
หรือไม่?