คัดลอกโฟลเดอร์ (และโครงสร้างภายใน) แต่รวมเฉพาะไฟล์


2

ฉันมีโฟลเดอร์ (ที่มีโฟลเดอร์ย่อยและโฟลเดอร์ย่อยเพิ่มเติม) ที่โฟลเดอร์สุดท้ายมีไฟล์หลายประเภท ประเภทไฟล์เหล่านี้รวมถึงรูปภาพ (.png / .jpeg) วิดีโอ (.mov) และไฟล์ข้อความ (.txt) แต่ฉันต้องการคัดลอกโฟลเดอร์ทั้งหมด (ที่มีโครงสร้างภายใน) และรวมเฉพาะไฟล์. mp3 เท่านั้น ใครบ้างมีความคิดใด ๆ ทำเช่นนี้ (โปรดอย่าพูดด้วยตนเองเพราะมีโฟลเดอร์มากกว่า 100 โฟลเดอร์และตัวโฟลเดอร์เองคือ 60GB ดังนั้นอย่าบอกให้ฉันคัดลอกทั้งโฟลเดอร์) โดยเฉพาะฉันต้องการถ้ามีใครสามารถให้ทางออกที่ฉันสามารถย้ายได้ทันที . mp3 (ในขณะที่รักษาโครงสร้างโฟลเดอร์)

คำตอบ:


1

ต่อไปนี้ทั้งสองคำสั่งที่ใช้ในเทอร์มิสามารถบรรลุสิ่งที่คุณเคยถามครั้งแรกสร้างโครงสร้างไดเรกทอรีปลายทางลำดับชั้นที่มี* .mp3ไฟล์และคำสั่งที่สองการลบ* .mp3ไฟล์จากโครงสร้างไดเรกทอรีลำดับชั้นแหล่งที่มา

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณมีการสำรองข้อมูลที่เหมาะสมก่อนที่จะใช้คำสั่งที่สองเนื่องจากพิมพ์ผิดอาจถึงแก่ชีวิตได้

เปิด Terminal

เริ่มต้นเทอร์โดยเปิดหนึ่งของหลักดังนั้นฉันจะใช้มันเป็นจุดเริ่มต้นและตัวอย่างไดเรกทอรีเพลงเป็นโครงสร้างไดเรกทอรีลำดับชั้นแหล่งที่มา

คำสั่งนี้เป็นครั้งแรกที่จะทำสำเนาของที่โครงสร้างไดเรกทอรีลำดับชั้นเพลงที่มีเพียง* .mp3แฟ้มในไดเรกทอรีปลายทาง กล่าวอีกนัยหนึ่งหลังจากเรียกใช้คำสั่งแรกจะมีไดเรกทอรีปลายทางที่ประกอบด้วยโครงสร้างไดเรกทอรีลำดับชั้นเดียวกันเริ่มต้นที่Musicภายในไดเรกทอรีปลายทางที่มีเฉพาะไฟล์* .mp3เท่านั้นและเฉพาะไดเรกทอรีจากแหล่งที่มีไฟล์* .mp3 หากไดเรกทอรีต้นทางที่ให้มาไม่มีไฟล์* .mp3ไดเรกทอรีไม่ได้สร้างขึ้นในไดเรกทอรีปลายทางโครงสร้างลำดับชั้น

หมายเหตุ: บรรทัดคำสั่งแบบเต็มขยายออกจากมุมมองโดยไม่ต้องเลื่อนในแนวนอน

find ./Music -name "*.mp3" -type f -print0 | xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

หมายเหตุ: คำสั่งแบบเต็มแสดงบนสองบรรทัดเพื่อความชัดเจน:

find ./Music -name "*.mp3" -type f -print0 | \
xargs -0 -I '{}' /usr/bin/rsync -avR "{}" "./mp3 files only/"

เมื่อคำสั่งด้านบนเสร็จสิ้นจะมีไดเรกทอรีในHome Directoryของฉันชื่อ"ไฟล์ mp3 เท่านั้น"และภายในไดเรกทอรีนั้นจะมีโครงสร้างไดเรกทอรีเพลงที่มีเฉพาะไฟล์* .mp3 หมายเหตุ: หากไม่มีไดเรกทอรีปลายทางระบบจะสร้างขึ้นโดยอัตโนมัติ

ตอนนี้ที่.mp3 *ไฟล์ที่ได้รับการคัดลอกมาจากแหล่งที่มาของเพลงโครงสร้างไดเรกทอรีลำดับชั้นไป"ไฟล์ MP3 เท่านั้น" ไดเรกทอรี* .mp3ไฟล์ที่สามารถลบออกจากแหล่งที่มาของเพลงโครงสร้างไดเรกทอรีลำดับชั้นที่มีคำสั่งดังต่อไปนี้

find  ./Music/ -name "*.mp3" -delete

นั่นคือมัน* .mp3ไฟล์ของพวกเขาพร้อมกับโครงสร้างไดเรกทอรีลำดับชั้น ได้ถูกคัดลอกไปยังตำแหน่งใหม่และ* .mp3ไฟล์ที่ถูกลบจากแหล่งที่มา


ขอบคุณมาก. สิ่งนี้ได้ผลเหมือนมนต์เสน่ห์ ฉันติดอยู่กับเรื่องนี้เป็นเวลานานจริงๆ ขอบคุณอีกครั้งที่ไม่ทำให้ฉันคัดลอกทั้งโฟลเดอร์ :)
SentientBacon

ฉันแค่สงสัยว่า: โดยการเปลี่ยน * .mp3 เป็นสมมติว่า * .txt มันจะใช้ได้กับไฟล์. txt ด้วยหรือไม่
SentientBacon

1
ใช่*. <any_extension>พร้อมลบไฟล์ประเภทใดก็ได้ *. <any_extension>เช่น* .txtจะลบไฟล์ข้อความ* .pdfจะลบไฟล์รูปแบบเอกสารพกพา ฯลฯ
user3439894

ฉันรักคุณมาก.
Skeleton Bow

0

โดยไม่ต้องใช้สคริปต์บรรทัดคำสั่งที่ค่อนข้างซับซ้อนฉันคิดว่าการคัดลอกโฟลเดอร์ทั้งหมดแล้วค้นหาและลบไฟล์ที่คุณไม่ต้องการ (ผ่านการค้นหาของ Finder's) จะเป็นวิธีที่ง่ายที่สุด แจ้งให้เราทราบหากคุณต้องการรายละเอียด (หรือถ้าการคัดลอกทั้งโฟลเดอร์จะเป็นการสาปแช่ง)

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