2009-03-10 22 views
10

Tôi có một thư mục mà trông như thế nàyMoving All Files Từ Thư mục One Step Up

[email protected]:/mydir/ucsc_mm8> tar -xvf *.tar 
1/chr1.fa.masked 
1/chr1_random.fa.masked 
2/chr2.fa.masked 
3/chr3.fa.masked 
4/chr4.fa.masked 
5/chr5.fa.masked 
5/chr5_random.fa.masked 
19/chr19.fa.masked 
Un/chrUn_random.fa.masked 

Những gì tôi muốn làm là để di chuyển ra khỏi tất cả các "* .masked" tập tin trong các thư mục con /1 tối đa /Un. Có cách nào nhỏ gọn để làm điều đó trong Linux/Unix không?

Trả lời

16

Cách tiêu biểu của di chuyển tập tin tất cả các file phù hợp với một biểu hiện cụ thể là

mv 1/*.masked targetDir 

nơi TargetDir có thể là ..

Nếu bạn muốn di chuyển nó từ các thư mục 1,2,3 thì bạn có thể làm điều gì đó như

mv */*.masked targetDir 

Hoặc, nếu bạn muốn đặc biệt di chuyển nó từ thư mục được đánh số, bạn chỉ có thể chạy một cái gì đó giống như

mv [0-9][0-9]/*.masked targetDir 
5

Nhiều vỏ unix hỗ trợ toán tử * trong phần thư mục của đường dẫn. Các công việc sau đây trong ít nhất là bash và zsh:

ls */*.masked 

Điều này sẽ trả về tất cả các tệp kết thúc bằng .masked one directory.

Vì vậy, để di chuyển chúng:

mv */*.masked destination 
Các vấn đề liên quan