Pomoc jak zmienić wsadowo (batch rename) nazwy plików bezpośrednio na Qnap?

Mafox_

System Engineer
Q Specialist
11 Kwiecień 2016
101
6
18
QNAP
TS-x51
Ethernet
1 GbE
Qnap TS 251
QTS 5.0.0.2055

Hej, czy jest jakiś programik, który pozwala na automatyczną zmianę nazwy plików na QNAP?
Qfiling przy transkodowaniu dodaje do nazwy pliku rozdzielczość np. (720p).
Potrzebuje zmienić plik(720p).mp4 na plik.mp4
W Qfiling jest możliwość zmiany nazwy ale nie ma możliwośći usunięcia znaków.
Ewentualnie jak można to zrobić wsadowo bezpośrednio w Qnapie z pominięciem komputera?
 
Sprawdziłem skrypt, który napisałem i działa.

1. Jak to zrobić? - (Linux) Instalacja Entware-Std | QNAP Polska - Oficjalne forum wsparcia technicznego QNAP Club

2. Jak to zrobić? - (Linux) Niezbędne narzędzia do skryptowania w Bashu | QNAP Polska - Oficjalne forum wsparcia technicznego QNAP Club
Bash:
opkg install findutils

3. W udziale sieciowym Public zapisz plik replace_720p.sh i wklej do niego:
Bash:
#!/bin/sh

f=$@
mv "$f" "$(echo $f | sed 's/ (720p)//i')"

4. Nadaj uprawnienia do uruchamiania
Bash:
chmod +x /share/Public/replace_720p.sh

5. Wywołaj polecenie:
Bash:
/opt/bin/find /share/Filmy/ -name *.mp4 -exec /share/Public/replace_720p.sh {} \;
/share/Filmy ma prowadzić do lokalizacji, którą chcesz zmieniać
 
niestety u mnie to nie działa :p , wydaje mi się ,że cały czas robiłem tak samo, a najpierw wyskakiwał help pliku find, a teraz "no such file or directory"
Połączono posty:

(ścieżka jest dobra jakby co i plik tam jest)
 
(ścieżka jest dobra jakby co i plik tam jest)fi
 

Załączniki

  • screen-putty.jpg
    screen-putty.jpg
    26,1 KB · Wyświetleń: 44
pokazałes że nie umiesz przykleić danych z posta #1

#1 find odpalony bez ściezki
#2 find twierdzi że nie ma pliku replace_720p.sh w /share/Public

nie wykonałeś poleceń z posta #1.
 
Nie , find się myli bo ten plik tam jest co już napisałem wyżej a pierwszy krok wykonałem.

Jednak po kolei
Opcja find jest, więc chciałem sprawdzić czy zadziała bez Entware.
1. Do folderu Public wgrałem przykładowy plik mp4, nazwałem test(720p).mp4
2. Do folderu Public wgrałem skrypt bash - plik replace_720p.sh (do którego wkleiłem kod)
3. polecenie chmod +x /share/Public/replace_720p.sh
4. Najpierw spróbowałem tej opcji find (bez instalcji Entware )w Midnight Commander to nic nie zmieniało a wynik pokazywał mi helpa find.
5. Nie wiedziałem czy coś zmieni ale zalogowałem się przez SSH i to samo.
6. Zainstalowałem Entware z pierwszego postu ale jest niepodpisany cyfrowo (podpis cyfrowy stracił ważność a QnapClub.eu nie działa) może tu problem - nie wiem.
7. Jeszcze raz polecenie chmod +x /share/Public/replace_720p.sh
8. opt/bin/find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; wynik: opt/bin/find No such file or directory
9. find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; wynik: /share/Public/replace_720p.sh No such file or directory

10. edit: To wyżej było wcześniej, teraz po zalogowaniu na qnapa find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; nie pokazuje, że brak pliku (a ja nie grzebałem w niczym, tylko się zalogowałem i wpisałem w/w polecenie) ale nic nie robi - plik mp4 nadal ma w nazwie (720p)
Natomiast opt/bin/find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; nadal pokazuje: opt/bin/find No such file or directory
 

Załączniki

  • qnap1.jpg
    qnap1.jpg
    22 KB · Wyświetleń: 35
  • pliki.jpg
    pliki.jpg
    19,7 KB · Wyświetleń: 36
opt/bin/find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; wynik: opt/bin/find No such file or directory
Dobrze pisze, zapomniałeś o '/' przed 'opt'
Połączono posty:

10. edit: To wyżej było wcześniej, teraz po zalogowaniu na qnapa find /share/Public -name *.mp4 -exec /share/Public/replace_720p.sh {} \; nie pokazuje, że brak pliku (a ja nie grzebałem w niczym, tylko się zalogowałem i wpisałem w/w polecenie) ale nic nie robi - plik mp4 nadal ma w nazwie (720p)
w pliku replace_720p.sh jest 's/ (720p)//i' czyli szuka <spacja>(720p) a nazwa pliku jest bez spacji: test(720p).mp4, więc nie robi nic
 
Dobrze pisze, zapomniałeś o '/' przed 'opt'
Połączono posty:


w pliku replace_720p.sh jest 's/ (720p)//i' czyli szuka <spacja>(720p) a nazwa pliku jest bez spacji: test(720p).mp4, więc nie robi nic
zapomniałem, ale z kreską też jest to samo:
Połączono posty:

a spację w bashu usunąłem i dalej nic
 

Załączniki

  • opt.jpg
    opt.jpg
    15,1 KB · Wyświetleń: 36
sprawdziłem ponownie i działa
zrób jeszcze
Bash:
chmod +x /share/Public/replace_720p.sh

FYI:
Kod:
[~/test] # /opt/bin/find . -name *.mp4
./test (720p).mp4

[~/test] # /opt/bin/find . -name *.mp4 -exec /share/Public/replace_720p.sh {} \;
./test (720p).mp4

[~/test] # cat /share/Public/replace_720p.sh 
#!/bin/sh

echo $@
 
Masz wyłączonego użytkownika 'admin'? Chyba tak. Prawdopodobnie użytkownik, którym się łączysz nie ma uprawnień do tego pliku. Pewnie jak pokażesz ls -la coś więcej będzie wiadomo.
 
Tak, Mam wyłączonego admina
Połączono posty:

entware.jpg
Połączono posty:

a może taki kod w Pythonie może ktoś poprawić i powiedzieć jak uruchomić ? (zainstałowałem qpkg Python3 (3.10.4.1))
import os

files = os.listdir("./")

for fl in files:
print(fl)
os.rename(fl, fl.replace("(720p)", ""))
 

Załączniki

  • ls-qnap.jpg
    ls-qnap.jpg
    27,8 KB · Wyświetleń: 39
Ok. Machnąłem się powinno być:
Kod:
ls -la /share/Public/*
żeby sprawdzić jakie pliki mają prawa dostępu. Tak przy okazji zawsze logujesz się tak samo? Bo na screenach jest raz '#' a raz user@nazwaserwera. Co do uwagi odnośnie find to może uruchom w katalogu /share/Public:
Kod:
/opt/bin/find . -name *.mp4
To co Silas podesłał. A i w punktach 8 i 9 raz uruchamiasz przez /opt/bin/find raz jako samo find. Może się okazać , że uruchamiasz różne wersje tego samego programu find. Lepiej zawsze podawaj pełne ścieżki do programów.
 
Odinstalowałem i zainstalowałem Entware. Nie wiem, chyba sprawdzę w Linux Station.. a ktoś wie jak zmienić i uruchomić ten skrypt wyżej w Pythonie ?
 

Załączniki

  • ls2-qnap.jpg
    ls2-qnap.jpg
    95,9 KB · Wyświetleń: 32
ok, widzę,że to faktycznie problem z Entware. Znalazłem,że ktoś miał podobny Commandline utilities for 4.3.3 - Page 2 - QNAP NAS Community Forum
Połączono posty:

a swoją drogą to jest nienormalne, że tak podstawowej rzeczy nie da się zrobić bez skryptu z poziomu NASa np. jakimś wbudowanym, firmowym programem qnapa
 
ale to jest stary thread
Bash:
/opt/bin/find --version
Kod:
find (GNU findutils) 4.8.0
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)

Bash:
/opt/bin/find --help | grep " -exec "
Jest -exec?
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. podpis cyfrowy
  2. jak uruchomic skrypt
  3. midnight commander ssh
  4. optware