Làm thế nào để di chuyển một số tập tin vào thư mục mẹ của họ?


13

Tôi muốn kéo tất cả các mp3 mà tình cờ đã được đưa vào một thư mục flac ra khỏi nó, vào thư mục mẹ của chúng.

Không quan trọng các thư mục sâu bao nhiêu, tôi chỉ muốn di chuyển các tệp phù hợp chính xác một thư mục lên.

Đây là cách tôi chọn tệp của mình:

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

Điều này hoạt động từ thư mục âm nhạc của tôi, nhưng tôi bị mắc kẹt ở đây. Tất cả các giải pháp tôi đã tìm thấy, hoặc di chuyển các tệp đến thư mục mẹ của thư mục hiện tại hoặc yêu cầu một số cấu trúc cố định.

Câu trả lời:


24

Thử:

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

Làm thế nào nó hoạt động

  1. find .

    Bắt đầu một lệnh find làm việc trên thư mục hiện tại.

  2. -path "*/flac/*"

    Chỉ chọn các tệp có flactrong đường dẫn của chúng

  3. -name '*.mp3'

    Chỉ chọn các tệp có phần mở rộng .mp3.

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

    Đối với bất kỳ tệp nào được tìm thấy, hãy chạy mvlệnh từ thư mục chứa tệp và di chuyển tệp vào thư mục mẹ.

    Ngoài việc làm cho nhiệm vụ đặc biệt này trở nên dễ dàng, tùy chọn -execdircũng an toàn hơn so với -exectùy chọn truyền thống .

Đơn giản hóa

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

1
Đẹp! Làm chính xác những gì tôi muốn.
Marcel

Là + một thay thế cho nghi thức \; ?
rackandboneman

@ Johnn1024 giả sử không có thư mục lồng nhau có cùng flacđường dẫn như */flac/flac/x.mp3nếu không, x.mp3tệp sẽ di chuyển lên hai cấp.
αsнι

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.