Skopiuj nazwy plików do innego folderu

0

Muszę skopiować nazwy plików z jednego folderu do drugiego. Zawartość pliku nigdy się nie zmienia. Żadne pliki nie są zastępowane, przenoszone ani kopiowane. Chodzi tylko o plik nazwy .

Mam folder A z plikami o nazwie:

  • Pokaż - S01E01 - Tytuł opisowy.mkv
  • Pokaż - S01E02 - Kolejny opisowy tytuł? .Mkv
  • Pokaż - S01E03 - Kolejna złożona nazwa! .Mkv
  • ...

Mam folder B z plikami o nazwie:

  • show.s01e01.mkv
  • show.s01e02.mkv
  • show.s01e03.mkv
  • ...

Nie potrzebuję już plików w folderze A, ponieważ pliki w folderze B mają lepszą jakość. Ale nie chcę ręcznie zmieniać nazw wszystkich plików w folderze B, aby mieć odpowiednią nazwę pliku, w tym tytuł odcinka. Chciałbym automatycznie przenieść odpowiednie nazwy plików z plików w folderze A do plików w folderze B. Kolejność alfabetyczna jest identyczna w obu folderach. Zatem n-ty plik w folderze B odpowiada n-ty plik w folderze A. W folderze końcowym B zawierałby dokładnie takie same nazwy plików jak w folderze A, ale zawartość plików jest oczywiście inna.

Przykład:

Przed:

Folder A:

  • Pokaż - S01E01 - Green Apples.mkv
  • Pokaż - S01E02 - Brzoskwinie w Sky.mkv

Folder B:

  • show.s01e01.mkv
  • show.s01e02.mkv

Po:

Folder A:

  • Pokaż - S01E01 - Green Apples.mkv
  • Pokaż - S01E02 - Brzoskwinie w Sky.mkv

Folder B:

  • Pokaż - S01E01 - Green Apples.mkv
  • Pokaż - S01E02 - Brzoskwinie w Sky.mkv

Jak to zrobić w Bash? (Lub jakiekolwiek inne narzędzie GNU / Linux, KDE OK też)

problemofficer
źródło
Czy chcesz skopiować te, które jeszcze nie istnieją w innym folderze?
Paul
Oba zestawy plików już istnieją. Nowe mają na przykład lepszą jakość. Nie chcę zmieniać ich ręcznie i dodawać każdego tytułu odcinka, ale pobieraj nazwy ze starej wersji i używaj ich do nowej wersji.
problemofficer
Trochę trudno to zrozumieć, próbując dodać przykład żądanego wyjścia.
meda
Dodałem przykład.
problemofficer

Odpowiedzi:

0

Wykonanie tego, co chcesz, wymaga pewnych skryptów. Niezbyt zaangażowany, ale trochę wymyśla koło.

To, co sugerowałbym, to instalacja tvnamer https://github.com/dbr/tvnamer

Dzięki temu baza danych będzie konsekwentnie zmieniać nazwy wszystkich Twoich mediów. Jeśli uruchomisz to wszystko, to zarówno programy o niskiej, jak i wysokiej jakości będą miały tę samą nazwę, więc możesz po prostu skopiować te wysokiej jakości nad tymi o niskiej jakości, używając cp.

Paul
źródło
0

Możesz wypróbować tablice bash. Poniżej przedstawiam rozwiązanie szkieletowe.

cd $DIR1
list1=( * )

cd $DIR2
i=0
for f in *
do
  mv $f ${list1[$i]}
  (( i += 1 ))
done

Jak już wspomniałeś w pytaniu, założeniem jest, że dokładna liczba plików jest w obu katalogach i alfabetycznie są one w porządku. Więcej sprawdzania błędów i może to być dopasowanie wzorców, aby było ono solidne.

list1 to tablica z nazwami plików w tym katalogu. $ {list1 [0]} jest pierwszym elementem w tablicy itp. Nie jestem pewien, czy będzie to działać z nazwami plików z białymi znakami itp.

jaychris
źródło