Điều này sẽ di chuyển foo.c
đến thư mục mới baz
với thư mục cha bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
Các -p
tùy chọn để mkdir
sẽ tạo thư mục trung gian theo yêu cầu.
Không có-p
tất cả các thư mục trong tiền tố đường dẫn phải tồn tại.
Mọi thứ bên trong backticks ``
được thực thi và đầu ra được trả về trong dòng như một phần của lệnh của bạn.
Vì mkdir
không trả về bất cứ thứ gì, chỉ có đầu ra của echo $_
sẽ được thêm vào lệnh.
$_
tham chiếu đối số cuối cùng đến lệnh được thực hiện trước đó.
Trong trường hợp này, nó sẽ trả về đường dẫn đến thư mục mới của bạn ( ~/bar/baz/
) được chuyển đếnmkdir
lệnh.
Tôi đã giải nén một kho lưu trữ mà không đưa ra đích và muốn di chuyển tất cả các tệp ngoại trừ
demo-app.zip
từ thư mục hiện tại của tôi sang một thư mục mới được gọi
demo-app
.
Dòng sau đây thực hiện thủ thuật:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
trả về tất cả các tên tệp bao gồm các tệp ẩn ( ngoại trừ ẩn .
và..
).
Biểu tượng ống |
được sử dụng để dẫn đầu ra của ls
lệnh tới grep
( một tiện ích tìm kiếm dòng lệnh, văn bản thuần túy ).
Các -v
lá cờ chỉ đạo grep
để tìm và trả lại toàn bộ tên file trừ demo-app.zip
.
Danh sách các tệp đó được thêm vào dòng lệnh của chúng tôi dưới dạng đối số nguồn cho lệnh di chuyển mv
. Đối số đích là đường dẫn đến thư mục mới được chuyển đến mkdir
tham chiếu bằng cách sử dụng $_
và đầu ra bằng cách sử dụng echo
.