Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 3
  • 38

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:

  1. 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')).
  2. Wyłączyć usługę która nie może działać podczas operacji.
  3. Dla każdego z plików/katalogów przenieść go z /dir1/costam do /dir2/costam.
  4. Włączyć usługę.

Może ktoś ma jakiś pomysł jak to lepiej/szybciej/bardziej elegancko rozwiązać?

Andrzej_Dopierała
  • Zapytał
  • @ Andrzej_Dopierała | 30.12.2015
    • lider
    • laureat
    • ekspert
    • 83
    • 65
    • 169
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 0

Ja myślę, że tu się nic nie wymyśli innego.

Natomiast ładnie napisane (mkdir -p $(dirname $plik|sed -e 's@^/dir1/@/dir2@g')).

  • Odpowiedział
  • @ | 27.01.2016
  • TRENER MODERATOR ALTKOM AKADEMII