Tôi gặp điều không may khi đến từ nền tảng MS-DOS - nhưng ít nhất nó khiến tôi đánh giá cao Linux mạnh hơn bao nhiêu. Tôi đã làm việc để đưa Linux-Fu của mình ngang hàng, nhưng có một vài điều có thể được thực hiện với DOS mà tôi không chắc làm thế nào để thực hiện dễ dàng nhất với Linux:
Đổi tên nhiều tệp - Sử dụng hai ký tự đại diện
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\>rename *.txt *.bak
c:\> dir
Directory of c:\
file1.bak
file2.bak
file3.bak
file4.bak
Tôi biết tôi có thể sử dụng find -exec
ở đây nhưng có thể sử dụng cú pháp ngắn hơn - có thể mv
với một số cờ hoặc cú pháp đặc biệt? Tôi đoán chìa khóa của cái này là ký tự đại diện thứ hai *
vì linux không có vấn đề gì với cái thứ nhất (tức là tôi biết cách chọn các tệp tôi muốn đổi tên bằng cách sử dụng ký tự đại diện)
Đổi tên một tệp - Sử dụng một ký tự đại diện
c:\> dir
Directory of c:\
file1.txt
c:\>rename file1.txt *.bak
c:\> dir
Directory of c:\
file1.bak
Điều này sẽ đặc biệt hữu ích khi đổi tên tên tệp dài và khó sử dụng. Tôi nghĩ có lẽ tôi có thể sử dụng mv file1.txt $1.bak
để kết thúc với file1.txt.bak
điều đó cũng có thể chấp nhận được nhưng tôi không chắc bạn có thể tham chiếu một $1
tham số nội tuyến bằng lệnh shell. Một lần nữa, trong trường hợp cụ thể này, thật tiện lợi khi ms-dos bastardized *
ký tự đại diện được sử dụng như một kiểu bắt / thay thế khớp cho một phần của tên tệp.
Lọc danh sách thư mục bằng ký tự đại diện
c:\> dir
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
text.txt
\temp (directory)
c:\> dir file*
Directory of c:\
file1.txt
file2.txt
file3.txt
file4.txt
c:\> t*
Directory of c:\
text.txt
\temp (directory)
Tôi không chắc cú pháp đúng để làm điều đó ls
là gì, hoặc nếu nó thậm chí có thể. Nếu tôi đã làm một cái gì đó như ls t*
nó sẽ tái diễn vào các thư mục bắt đầu với t
. Cách giải quyết của tôi đã được sử dụng find . --max-depth 1 -iname "t*"
hoặc một cái gì đó tương tự ls -al | grep t
- không phải cái nào cũng ngắn và đơn giản như vậy dir t*
.
Cuối cùng, tôi biết rằng tôi có thể thiết lập các bí danh để làm cho các lệnh dài này ngắn hơn, nhưng tôi muốn tìm hiểu một số linux-fu ngoài luồng để thực hiện những việc này vì đôi khi bạn được kết nối với hệ thống từ xa hoặc làm việc trên một máy mới.
Vậy làm thế nào tôi có thể mv
và ls
các tệp giống như cách tôi đã sử dụng dir
và rename
các tệp?