How to skip if file not found in bash?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to skip if file not found in bash?
# 1  
Old 09-21-2018
How to skip if file not found in bash?

Hello,
I have a question regarding while loop and existence of files.
I am running under ubuntu 18.04 bionic, have around fifty video files inside the directory.

script:
Code:
for file in *.mp4
do
/root/bin/ffmpeg -i $file \
-i $(basename "${file/.mp4}").bs.srt \
-i $(basename "${file/.mp4}").da.srt \
-i $(basename "${file/.mp4}").slo.srt \
-i $(basename "${file/.mp4}").sv.srt \
-map 0:v -map 0:a \
-map 1 -map 2 -map 3 -map 4 \
-c:v copy -c:a copy -c:s copy  -metadata:s:s:0 \
language=bos -metadata:s:s:1 language=dan -metadata:s:s:2 
language=slo -metadata:s:s:3 language=swe "${file/.mp4}")_output.mp4
done

What I wish to do is to prevent receiving "srt file not found" error in case there is no searched srt files inside the directory. If I don't do that, process fails.

For example,

File1.mp4 -> I have only File1.bs.srt and File1.da.srt
File2.mp4 -> I have only File2.slo.srt and File2.sv.srt

When File1.mp4 is in use, it will just take File1.bs.srt and File1.da.srt, and will skip File1.slo.srt and File1.sv.srt

How may I accomplish this?

Thanks in advance
Boris
# 2  
Old 09-21-2018
Hmmm - not that simple. Would ffmpeg accept reading from /dev/null (to substitute a non-existing .srt file)?


And, you don't need the basename for files in your working directory.
And, you could use "brace expansion" to have the shell create the include file list:
Code:
echo /root/bin/ffmpeg -i $file -i\ ${file/.mp4}.{bs,da,slo,sv}.srt
/root/bin/ffmpeg -i FILE3.mp4 -i FILE3.bs.srt -i FILE3.da.srt -i FILE3.slo.srt -i FILE3.sv.srt


Last edited by RudiC; 09-21-2018 at 03:50 PM..
# 3  
Old 09-21-2018
Dear Rudic,
If you have any recommendations I would try at my end.
I thought that if I can store each mp4 file and related srt files in the same directory (I mean fifty different directories, for file1 only file1.mp4 and related srt files, for file2 a new directory with related srt files etc.. ), I may list all files and store in a new file and then echo what I need. A bit complicated I think.

Code:
ls -a > file_list
for file in *.srt
do
echo "ffmpeg ..."
done > edit.sh
chmod 755 edit.sh
./edit.sh

By the way, Scrutinizer gave a reply but I can not see his post under the same thread..

Thanks
Baris

Last edited by baris35; 09-21-2018 at 03:43 PM..
# 4  
Old 09-21-2018
Should ffmpeg not complain if asked to include /dev/null, try
Code:
for file in *.mp4
   do   FN=($(ls "${file/.mp4}"*.srt))
        echo /root/bin/ffmpeg -i $file -i ${FN[0]:-/dev/null} -i ${FN[1]:-/dev/null} -i ${FN[2]:-/dev/null} -i ${FN[3]:-/dev/null}
   done
/root/bin/ffmpeg -i FILE1.mp4 -i FILE1.da.srt -i FILE1.slo.srt -i /dev/null -i /dev/null
/root/bin/ffmpeg -i FILE2.mp4 -i FILE2.bs.srt -i FILE2.da.srt -i FILE2.slo.srt -i FILE2.sv.srt
/root/bin/ffmpeg -i FILE3.mp4 -i FILE3.bs.srt -i FILE3.da.srt -i FILE3.sv.srt -i /dev/null

This User Gave Thanks to RudiC For This Post:
# 5  
Old 09-21-2018
Thank you million times Rudic,
Gives the expected output.

Kind regards
Boris
# 6  
Old 09-21-2018
Well, well... how about this one:
Code:
for file in *.mp4
  do    echo /root/bin/ffmpeg -i $file $(printf -- "-i %s "  $(ls "${file/.mp4}"*.srt))
  done
/root/bin/ffmpeg -i FILE1.mp4 -i FILE1.da.srt -i FILE1.slo.srt
/root/bin/ffmpeg -i FILE2.mp4 -i FILE2.bs.srt -i FILE2.da.srt -i FILE2.slo.srt -i FILE2.sv.srt
/root/bin/ffmpeg -i FILE3.mp4 -i FILE3.bs.srt -i FILE3.da.srt -i FILE3.sv.srt

This User Gave Thanks to RudiC For This Post:
# 7  
Old 09-21-2018
The only problem regarding your first solution is that we can not grab the "language" field. I will test the second one when I show up to my house. On my way to home...

Last edited by baris35; 09-21-2018 at 04:26 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash to search file for string and lauch function if found

In the bash below I am searching the filevirus-scan.log for the Infected files: 0 line (in bold) and each line for OK. If both of these are true then the function execute is automatically called and processing starts. If both these conditions are not meet then the line in the file is sent to the... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

Bash - trap error file not found

Hello. In bash, is there a way to trap error "file not found" when a script call another script which is not found; then abort. Example ( part of script running with -x option set) : + return 0 + RETURN_CODE=0 + ] + /root/bin/200_yast_install/00_reset_yast_install bash:... (5 Replies)
Discussion started by: jcdole
5 Replies

3. Shell Programming and Scripting

Special case to skip function in bash menu

In the bash menu below if the variant that is inputted is in the format NM_004004.3:c.274G>T the below works perfectly. My question is if the variant inputted isNM_004004.3:-c.274G>T or NM_004004.3:+c.274G>T then the code as is will throw an error due to a biological issue. Is it possible to to... (1 Reply)
Discussion started by: cmccabe
1 Replies

4. UNIX for Dummies Questions & Answers

Using awk to skip record in file

I need to amend the code blow such that it reads a "black list" before the "print" statement; if "substr($1,1,6)" is found in the "blacklist" it will ignore that record and continue. the code is from an awk script that is being called from shell script which passes the input values. BEGIN { "date... (5 Replies)
Discussion started by: bazel
5 Replies

5. Shell Programming and Scripting

-bash-3.2$: not found

I am wondering if someone can help me out. I am new to oracle and given a task to install Oracle 11g on Solaris. I am running into some major problems since last week since I can't seem to get it to work. I can't start GUI, tried different blogs but no luck. Then, I decided to install it in a... (4 Replies)
Discussion started by: newborndba
4 Replies

6. UNIX for Dummies Questions & Answers

File Not found - Bash script

I'm facing issues in executing the bash script of mine. This script will pick the latest file received and connects SFTP server and files is placed on this remote server. Error message Enter password: "File movement" sftp> cd Test sftp> put Test_File_201309.txt File "Test_File_201309.txt"... (6 Replies)
Discussion started by: parpaa
6 Replies

7. UNIX for Dummies Questions & Answers

Im new to bash scriping and i found this expression on a bash script what does this mean.

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi espeacailly the top regex part? ---------- Post updated at 06:58 PM ---------- Previous update was... (1 Reply)
Discussion started by: kevin298
1 Replies

8. Shell Programming and Scripting

bash script search file and insert character when match found

Hi I need a bash script that can search through a text file and when it finds 'FSS1206' I need to put a Letter F 100 spaces after the second instance of FSS1206 The format is the same throughout the file I need to repeat this on every time it finds the second 'FSS1206' in the file I have... (0 Replies)
Discussion started by: firefox2k2
0 Replies

9. HP-UX

bash...Not found through where(compiling source file)

Hi i have compiled and installed bash 3.2 on my hp-ux parisc its in path /usr/local/pkg/bash/bin/bash .....When im search for this bash (through whereis bash) im not findind but other which i hve done in same procedure( gettext,m4) ..Im able to find through whereis search option can any1... (3 Replies)
Discussion started by: vasanthan
3 Replies

10. UNIX for Dummies Questions & Answers

skip reading certain lines in a file

How can I exclude reading lines in a file that contains the following: filesystem:/home/pach/liv_patches 128005120 88456640 37270758 71% /home/patches That is, all lines that contain and begins with filesystem: should not be processed/read from a file (5 Replies)
Discussion started by: paulsew
5 Replies
Login or Register to Ask a Question