2017-12-21 4 views
0

Ich habe ein kleines Skript in Bash und ich habe ein Problem mit Gleichgestellten. Ich habe 80 Dateien in .mp4 und möchte alle Filme mit 1 verknüpfen, also habe ich ein Skript geschrieben. Meine Dateinamen sind zum Beispiel 2.mp4 5.mp4 10.mp4 etc ... Sie sind nicht in Ordnung, und ich habe nicht 13,14,15.mp4, aber ich habe 12.mp4 und 16.mp4Iteration gleich Dateiname Bash

ich möchte gleich Iteration mit dem Dateinamen in meiner Loop-Funktion und ich weiß nicht, wie ...

for((i=1; i <= 200; i++)) 
{  
     if[ -f "$i.mp4" == WHAT HERE??? ] ; then 
       mkvmerge -o /home/ftpuser/movies/Main/out/$i.mp4 /home/ftpuser/movies/Movie/test.mp4 \+ /home/ftpuser/movies/addMovie/$i.mp4 
     else 
       echo -e "${RED}Null${NC}" 

fi 
} 
+0

Wenn Ihre Zahlen klein sind, können Sie ohne viel Aufwand über alle möglichen Werte iterieren, aber wenn Ihre Dateien '3459087.mp4',' 9387540.mp4' usw. heißen, dann ist es möglich, über alle * zu iterieren * Namen ist Unsinn. Wie wäre es, wenn man so iteriert: 'für f in * .mp4; machen ...; fertig. Das wäre viel prägnanter. – Alfe

+0

Dies ist sehr ineffizient. Sie können die vollständige Liste der Dateien in einem einzigen Befehl an 'mkvmerge' übergeben und sie in einem einzigen Durchgang verketten. Es hat auch nichts mit "ffmpeg" zu tun. – aergistal

Antwort

2

if [ -f ${i}.mp4 ] ; then dieses. Wenn die Datei existiert, wird then Fall ausgeführt. Sonst, else wird.

Überprüfen Sie, dass Sie Skript im Verzeichnis mit mp4-Dateien ausführen. Wenn Sie nicht sind, schreiben vollständigen Pfad zur Datei, wenn, wie: if [ -f /pull/path/to/your/file/${i}.mp4 ]; then

auch Sie können versuchen, laufen:

#!/bin/bash 

for files in /full/path/to/your/mp4/files/* 
do 
    name=$(basename ${files}) 
    mkvmerge -o /home/ftpuser/movies/Main/out/${name} /home/ftpuser/movies/Movie/test.mp4 \+ /home/ftpuser/movies/addMovie/${name} 
done 

Hier braucht man nicht if Aussagen.

+0

Jetzt möchte ich das zweimal upvote. – Alfe

+0

Hallo vielen Dank! :) Ich teste jetzt – Mdr92

+0

@ Mdr92 np. Habe die letzte Lösung bearbeitet. Schau es dir an, schreibst ohne zugriff auf linux-terminal, damit es ein kleines problem mb haben kann. Oder verwende einfach zuerst :) –

Verwandte Themen