У меня есть пакет файлов, все заканчивающиеся одной и той же строкой, а именно: *_ext.dat
расположенный в нескольких подкаталогах вместе с несколькими другими файлами в данном главном каталоге. Это структура:
/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
Мне нужно рекурсивно переместить только файлы, оканчивающиеся на *_ext.dat
в новый основной каталог , new_dir
, с учетом структуры sub-dir, чтобы файлы в конечном итоге оказались в эквивалентной структуре dir, например так:
/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
Из-за этого команда должна также создать эти подкаталоги с соответствующими именами. Я знаю, что с такой строкой:
find . -name "*_ext.dat" -print0 | xargs -0 rm -rf
Я могу удалить все эти файлы, но я не знаю, как изменить это, чтобы сделать то, что мне нужно (или, если это вообще возможно).