Pomoc kopiowanie tylko plikow z danym prefiksem w lokalizacji

lukjod

Entry Technician
Q Associate
2 Lipiec 2014
43
1
7
8
50
Warszawa
QNAP
TS-x64
Ethernet
1 GbE
probuje wykonac kopie i zmienic nazwe pliku z napisami z prefixem pl w danym katalogu tak aby uzyskac z katalogu napisy.en.srt i napisy.pl.srt napisy jako napisy.en.srt i napisy.srt (czyli przy kopiowaniu uzunac prefix pl). Skrypt wywołuje plug-in sub zero od razu po ściągnięciu napisów do danego katalogu wynikowego $1

Kod:
#!/bin/bash
for f in "$1"; 
do cp "$f" "${f%.pl.srt}.srt" ;
done

ten kod zmienia mi napisy.en.srt na napisy.en.srt.srt

Jak to poprawic?
 
naming convention mówi że jeśli używasz plików z napisami z kodem ISO to trzymaj się tego , używają tego ludzie na całym świecie ... po co wymyślasz koło na nowo ? jakiś sensowny powód ?
 
Niestety mój tv lg z 2013 jeszcze przez webos z dolną łapie 1 alfabetycznie napis w tym wypadku tylko end więc obecność pl napisów nic nie zmienia. Jeżeli zmienia nazwę na napisy.srt to je widzi A gdy ich nie ma w katalogu to widzi napisy.en.srt jako pierwsze, zatem tym sposobem wymusza pierwszeństwo na tv pl napisów.

Chodzi mi o właściwą komendę w pliku żeby zmienić nazwę tylko pliku z pl w srodku
 
pozwala na parametry ponizej wiec chcialem w danym katalogu skpiowac napisy.pl.srt na napisy.srt ale poleglem na skrypcie
  • %(subtitle_language)s
  • %(subtitle_path)s
  • %(subtitle_filename)s
  • %(provider)s
  • %(score)s
  • %(storage)s
  • %(series_id)s
  • %(series)s
  • %(title)s
  • %(section)s
  • %(filename)s
  • %(path)s
  • %(folder)s
  • %(season_id)s
  • %(type)s
  • %(id)s
  • %(season)s

 
nie dogadamy się ..

  1. #!/bin/bash <- wymusza używanie basha ...
  2. for f in "$1"; <- dla każdego elementu w zbiorze $1 <=== co to jest ? jak jest skrypt odpalany ?
  3. do cp "$f" "${f%.pl.srt}.srt" ; <- skopiuj plik którego nazwa jest w zmiennnej f (który bierze się powyższego) do tego czegoś.srt
  4. done <- koniec pętli z lini 2.
 
2 skrypt jest odpalany z parametrem %(subtitle_path)s
chodzi mi o to jak komenda cp skopiowac tylko plik *.pl.srt a zostawic wszystko inne nietkniete

pelne wywolanie skryptuna aarch64 qnap128a:
/share/CACHEDEV1_DATA/.qpkg/rename_plex_sub.sh %(subtitle_path)s

Czy mozna to zrobic lepiej uzywajac innych parametrow niz uzyty przeze mnie?

po wywolaniu w logu paramter %(subtitle_path)s wyglada tak:

Calling /share/CACHEDEV1_DATA/.qpkg/rename_plex_sub.sh with args [u'/share/CACHEDEV1_DATA/Download/Movies/24 Hours to Live (2017) [1080p, AC3, 6ch]/24 Hours to Live (2017).en.srt'] failed: output:
, error:
cp: accessing `//share/CACHEDEV1_DATA/Download/Movies/24 Hours to Live (2017) [1080p, AC3, 6ch]/24 Hours to Live (2017).en.srt/*.p*.srt.srt': Not a directory
 
gdzie rachunek wysłać ?

Bash:
#!/usr/bin/env bash
if [ "$#" -ne 1 ];
then
echo "Missing parameter! Exiting!"
exit 0
fi

if [[ ! -f "$1" ]];
then
echo "File does NOT EXISTS ! Exiting !"
exit 0
fi

subtitle="$1"
mask="pl.srt"
#echo ${subtitle}

if [[ "$subtitle" =~ $mask ]];
then
echo "Time to work !"
newfilename=$( echo $subtitle | sed 's/.pl//g')
echo "$newfilename"
cp -p "$subtitle" "$newfilename"
fi

testować ...