Làm cách nào để tạo các thư mục 00-99 bằng một lệnh duy nhất trong Ubuntu?


16

Tôi cần tạo các thư mục bắt đầu từ 00 đến 99 (00, 01, 02, 03, v.v ....) ở vài trăm địa điểm. Có một dòng lệnh duy nhất sẽ cho phép tôi làm điều đó?

Câu trả lời:


45

Câu trả lời của mulaz là chính xác, nhưng nhiều người nói seqlà beacuse ác, hầu hết các vỏ sò sẽ cho phép bạn làm như sau

mkdir {00..99}

Tuy nhiên, trong một số phiên bản cũ hơn của bash, 0-9không có đệm, vì vậy bạn sẽ phải làm

mkdir 0{0..9} {10..99}

9
+1 nên là câu trả lời được chấp nhận IMHO. Bash không chỉ là thành ngữ này, nó không yêu cầu sử dụng chương trình bên ngoài (mà seq là).
Trollhorn

1
Đây là cách nó nên được thực hiện.
phoxis

7
Các công việc sau cũng vậy:> mkdir {0..9} {0..9}
Orieg

17

Điều này sẽ làm gì?

for i in `seq -w 0 99`; do mkdir $i; done

thực hiện một vòng lặp cho các số 0-99 và "-w" đặt chiều rộng bằng nhau (đệm 0 cho 0-9)


7
seq -w 0 99 | xargs mkdircũng sẽ làm công việc.
Jay

11
Bạn có thể bỏ vòng lặp và chỉ cần làm mkdir $(seq -w 0 99). Hoặc sử dụng backticks thay vì $(), nhưng tôi không thể đặt backticks vào vì cú pháp serverfault.
Patrick

@Patrick: Có, bạn có thể: mkdir `seq -w 0 99` (Tôi không thể tránh thêm không gian). Xem ở đây , nhưng có vẻ như mẹo bao gồm các khoảng trắng trong dấu phân cách không hoạt động ở đây.
Keith Thompson

2
Backticks @Patrick rất tệ: mywiki.wooledge.org/BashFAQ/082
Andrew

@Andrew vâng Tôi biết điều đó, nhưng tôi thích ở lại với phong cách mã hóa của bất cứ điều gì tôi đang trả lời.
Patrick

2

Tôi biết điều này đã cũ, nhưng khuyến nghị của tôi sẽ là:

cho tôi vào seq -f %02g 0 99; làm mkdir $ i; làm xong

-f% 02g đảm bảo nó giữ ít nhất hai ký tự, chẳng hạn như 00 hoặc 99, và vẫn sẽ cho phép 3 số ký tự vượt 99, vì vậy nếu bạn có 100, nó sẽ không trở thành 001. Nó sẽ là 00-99 100 thay vì 001- 100 như -w nào.

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.