วิธีการย้ายไฟล์บางไฟล์ไปยังไดเรกทอรีแม่ของพวกเขา?


13

ฉันต้องการดึง mp3 ทั้งหมดที่ตั้งใจใส่เข้าไปในโฟลเดอร์ flac จากโฟลเดอร์นั้นไปยังโฟลเดอร์หลัก

ไม่สำคัญว่าโฟลเดอร์จะลึกแค่ไหนฉันแค่ต้องการย้ายไฟล์ที่ตรงกันหนึ่งไดเรกทอรีขึ้น

นี่คือวิธีที่ฉันเลือกไฟล์ของฉัน:

find . -path "*/flac/*" -name '*.mp3'

สิ่งนี้ใช้ได้จากโฟลเดอร์เพลงของฉัน แต่ฉันติดอยู่ที่นี่ วิธีแก้ปัญหาทั้งหมดที่ฉันพบย้ายไฟล์ไปที่พาเรนต์ของโฟลเดอร์ปัจจุบันหรือต้องการโครงสร้างคงที่

คำตอบ:


24

ลอง:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

มันทำงานอย่างไร

  1. find .

    เริ่มต้นคำสั่ง find ที่ทำงานกับไดเร็กทอรีปัจจุบัน

  2. -path "*/flac/*"

    เลือกไฟล์ที่มีflacในเส้นทางของพวกเขา

  3. -name '*.mp3'

    .mp3เลือกเฉพาะไฟล์ที่มีนามสกุล

  4. -execdir mv -t ../ {} +

    สำหรับไฟล์ใด ๆ ที่พบให้รันmvคำสั่งจากไดเร็กทอรีที่ไฟล์นั้นอยู่และย้ายไฟล์ไปยังไดเร็กทอรีพาเรนต์

    นอกเหนือจากการทำให้งานนี้เป็นเรื่องง่ายตัวเลือก-execdirยังมีความปลอดภัยมากกว่า-execตัวเลือกแบบดั้งเดิม

การทำให้เข้าใจง่าย

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +

1
ดี! ทำในสิ่งที่ฉันต้องการ
Marcel

+ เป็นทางเลือกสำหรับพิธีกรรม \; ?
rackandboneman

@ Johnn1024 สมมติว่าไม่มีไดเรกทอรีที่ซ้อนกันเหมือนกันflacในพา ธ*/flac/flac/x.mp3มิฉะนั้นx.mp3ไฟล์จะย้ายสองระดับขึ้น
αғsнιη

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