Mam katalogi z plikami:
/dir1/a/b/c/file1
/dir1/a/b/c/file2
/dir1/a/d/file3
/dir1/a/e/file4
/dir1/f/dir3/costam
/dir1/f/dir4/costam
Mam też w pliku listę plików/katalogów które muszą z tego drzewka katalogów zniknąć w możliwie krótkim czasie. Nie chcę ich usuwać - na wypadek konieczności przywrócenia.
Chciałbym więc część z tych plików i katalogów przenieść do innego katalogu - np /dir2/, tak by:
/dir1/a/b/c/file1 -> /dir2/a/b/c/file1
/dir1/a/d/file3 -> /dir2/a/d/file3
/dir1/f/dir3/ -> /dir2/f/dir3/
Dodam że konieczne jest przeniesienie - plików jest dużo i operacja skopiowania po prostu potrwa za długo - jedynie mv wchodzi w rachubę.
To co wymyśliłem w tej chwili to:
- Iteracyjnie przelecieć się po liście plików w pliku i dla każdego z nich utworzyć odpowiedni katalog w dir2 (mkdir -p $(dirname $plik|sed -e 's@^/dir1/@/dir2@g')).
- Wyłączyć usługę która nie może działać podczas operacji.
- Dla każdego z plików/katalogów przenieść go z /dir1/costam do /dir2/costam.
- Włączyć usługę.
Może ktoś ma jakiś pomysł jak to lepiej/szybciej/bardziej elegancko rozwiązać?