Mam partię plików, które kończą się tym samym ciągiem, tzn .: *_ext.datznajdują się w kilku podkatalogach wraz z kilkoma innymi plikami, w danym katalogu głównym. Oto struktura:
/main_dir/subdir1/file11_ext.dat
/main_dir/subdir1/file12_ext.dat
/main_dir/subdir1/file13_ext.dat
/main_dir/subdir1/file14_other.dat
/main_dir/subdir1/file15_other.dat
/main_dir/subdir2/file21_ext.dat
/main_dir/subdir2/file22_ext.dat
/main_dir/subdir2/file23_ext.dat
/main_dir/subdir2/file24_other.dat
/main_dir/subdir2/file25_other.dat
/main_dir/subdir3/file31_ext.dat
/main_dir/subdir3/file32_ext.dat
/main_dir/subdir3/file33_ext.dat
/main_dir/subdir3/file34_other.dat
/main_dir/subdir3/file35_other.dat
Muszę rekurencyjnie przenosić tylko pliki kończące *_ext.datsię na nowy katalog główny new_dir, z poszanowaniem struktury sub-katalogu, tak aby pliki skończyły się na równoważnej strukturze katalogu:
/new_dir/subdir1/file11_ext.dat
/new_dir/subdir1/file12_ext.dat
/new_dir/subdir1/file13_ext.dat
/new_dir/subdir2/file21_ext.dat
/new_dir/subdir2/file22_ext.dat
/new_dir/subdir2/file23_ext.dat
/new_dir/subdir3/file31_ext.dat
/new_dir/subdir3/file32_ext.dat
/new_dir/subdir3/file33_ext.dat
Z tego powodu polecenie powinno również utworzyć podkatalogi z odpowiadającymi im nazwami. Wiem o tym z taką linią:
find . -name "*_ext.dat" -print0 | xargs -0 rm -rf
Mogę usunąć wszystkie te pliki, ale nie wiem, jak je zmodyfikować, aby zrobić to, czego potrzebuję (lub czy jest to w ogóle możliwe).
rsync --include=*_ext.dat /main_dir/ /new_dir/. Nie przetestowałem tego jednak.