Sử dụng dấu ngoặc nhọn (dấu ngoặc) để tạo cấu trúc thư mục với `mkdir -p`


16

Như man mkdirtiểu bang

   -p, --parents
          no error if existing, make parent directories as needed

Khi tôi chạy lệnh này

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

Nó tạo ra một cấu trúc thư mục như thế này workcha mẹ thư mục sau đó F1, F2, F3các thư mục con và temp1temp2các thư mục con dưới ba thư mục mẹ F1, F2, F3.

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

Bây giờ vấn đề là tôi muốn tạo temp1, temp2các thư mục chỉ F1không ở dưới F2F3, nhưng tôi bối rối về cách tôi có thể viết một lệnh để làm những gì tôi muốn.


@Caleb: xin lỗi, tôi không biết cả hai chúng tôi đều chỉnh sửa cùng một lúc, có vẻ như việc hợp nhất sửa đổi không được SE thực hiện: - /
Stéphane Gimenez

@Stephane: Không phải lo lắng. Tôi đã thực hiện rất nhiều chỉnh sửa và thật hiếm khi hai chỉnh sửa chính bị ghi đè như thế. Cảm ơn đã đóng góp!
Caleb

Câu trả lời:


25

Có lẽ đây là những gì bạn đang tìm kiếm?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}

Này, tôi đã tự hỏi gần đây nếu mọi thứ có thể được thực hiện đơn giản như vậy. Cảm ơn!
rozcietrzewiacz

2

Một mô tả rất tốt về mở rộng niềng răng (với các ví dụ) có thể được tìm thấy ở phần phụ Brace Expansioncủa hướng dẫn bash ( man bash, nhấn /để bắt đầu tìm kiếm và tìm kiếm Brace Expansion).


Cảm ơn bạn, câu trả lời của bạn đã dẫn tôi đến hướng dẫn tuyệt vời này! Chỉ cần biết rằng nó được gọi là "Mở rộng cú đúp" vì vậy tôi biết những gì để google. linuxcommand.org/lc3_lts0080.php Trích: "Có lẽ việc mở rộng kỳ lạ được gọi là mở rộng cú đúp Với nó, bạn có thể tạo nhiều chuỗi văn bản từ một mẫu có chứa dấu ngoặc Dưới đây là một ví dụ:.. [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back"
Rock Lee

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

Điều này đầu tiên tạo ra workvà ba thư mục con trước khi tạo các thư mục cấp thấp hơn của work/F1. Thật dễ đọc và dễ hiểu.

Hoặc, nếu bạn hoàn toàn cần kết hợp mọi thứ thành một biểu thức quái vật duy nhất (hoàn toàn không cần phải làm điều đó vì nó khó đọc và duy trì):

mkdir -p work/F{1/temp{1,2},2,3}
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.