Ho una serie di file che terminano tutti con la stessa stringa, vale a dire: *_ext.datsituati in più sotto-directory insieme a molti altri file, in una determinata directory principale. Questa è la struttura:
/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
Devo spostare in modo ricorsivo solo i file che finiscono *_ext.datin una nuova directory principale new_dir, rispettando la struttura della directory secondaria in modo che i file finiscano in una struttura di directory equivalente come questa:
/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
Per questo motivo il comando dovrebbe anche creare quelle sottodirectory con i loro nomi corrispondenti. Lo so con una linea come questa:
find . -name "*_ext.dat" -print0 | xargs -0 rm -rf
Posso eliminare tutti quei file, ma non so come modificarlo per fare ciò di cui ho bisogno (o se è anche possibile).
rsync --include=*_ext.dat /main_dir/ /new_dir/farà il trucco. Non l'ho provato però.