2009-03-10 12 views
10

Mam katalogów, które wyglądają jak toPrzenoszenie wszystkich plików z katalogów 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 

Co chcę zrobić, to przenieść na wszystkie „* .masked” pliki w podkatalogach /1 września /Un. Czy jest to mały sposób na zrobienie tego w systemie Linux/Unix?

Odpowiedz

16

Typowym sposobem przenoszenia plików wszystkie pliki pasujące do konkretnego wyrażenia jest

mv 1/*.masked targetDir 

gdzie TARGETDIR może być ..

Jeśli chcesz przenieść go z katalogów 1,2,3, możesz zrobić coś takiego, jak

mv */*.masked targetDir 

Albo, jeśli chcesz przenieść go specjalnie z ponumerowanych katalogów, wystarczy uruchomić coś podobnego

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

Wiele powłok uniksowych obsługuje także operator * w części katalogu ścieżki. Następujące prace w przynajmniej bash i zsh:

ls */*.masked 

ten powróci wszystkich plików, które kończą się .masked jeden katalog głębiej.

Tak, aby przenieść je:

mv */*.masked destination