Tip: file_exists function


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Tip: file_exists function
# 1  
Old 10-20-2014
Tip: file_exists function

Often a wildcard test on files is needed.
Because test -f ... or [ -f ... ] have problems with zero or many arguments, and even [[ -f ... ]] has problems, and I have seen some ugly work-arounds,
I suggest the following simple function, to be defined somewhere at the beginning of the script:
Code:
file_exists() {
  for _i do [ -f "$_i" ] && return
  done
  return 1
}

It returns status 0 (success) if at least one of the given files was found,
and status 1 otherwise (the return 1 is necessary in case the nullglob option is on).
Examples:
Code:
if file_exists /tmp/*
then
  echo "at least one file is in /tmp"
fi

Code:
if file_exists /usr/lib/libtcl.so* /usr/lib/libtcl[0-9]*.so*
then
  echo "a libtcl is in /usr/lib"
fi

Analogue to file_exists() one can have the functions
Code:
dir_exists() {
  for _i do [ -d "$_i" ] && return
  done
  return 1
}

and
Code:
file_executable () {
  for _i do [ -f "$_i" -a -x "$_i" ] && return
  done
  return 1
}

These 3 Users Gave Thanks to MadeInGermany For This Post:
# 2  
Old 10-20-2014
Interesting.

But, as you test for any file, not a specific one, why not
Code:
file_exists() {   [ -f "$1" ] && return;   return 1; }

or even
Code:
file_exists() {   [ -f "$1" ];  return $?; }

This User Gave Thanks to RudiC For This Post:
# 3  
Old 10-20-2014
That would only test the first argument.
If the first matching /tmp/* token is a directory, it would return 1="no file found" regardless if a subsequent token is a file.
# 4  
Old 10-20-2014
Ah - got you. Thanks!
# 5  
Old 10-20-2014
EDIT: Nevermind, thats the purpose of your script Smilie

Last edited by sea; 10-20-2014 at 10:51 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Tip] A better echo

Often it has been said that echo is neither portable nor correct. Here is an input.txt: line1 line2 -n line4 -en line6 -x line8 Then the following fails with BSD/Linux/bash: while IFS= read line do echo "$line" done < input.txt It is elegantly improved by means of an echo... (2 Replies)
Discussion started by: MadeInGermany
2 Replies

2. AIX

[TIP] Migration to POWER8

Read "Migration to POWER8" article to get prepared for migration to POWER8: link removed, advertisement (0 Replies)
Discussion started by: pave01
0 Replies

3. Shell Programming and Scripting

Quick awk tip :)

how do i "awk" the date after the from only to compare it on a if statement later . filename example: server1-ips-ultranoob-ok_From_2012_21_12-23:40:23_To_2012_21_12-23:49:45.zip what i want o do is compare only the date from the string in "From_2012_21_12" in this case i only want the... (4 Replies)
Discussion started by: drd0spt
4 Replies

4. Shell Programming and Scripting

Search tip.

How do I find a key word in multiple files.. in a directory.. ? cat *.doc | grep -i myword? (7 Replies)
Discussion started by: hamon
7 Replies

5. Shell Programming and Scripting

Regexp tip

Hello, I'm just starting working on it. I'd like to get a tip For istance if I have a file like: a b c d e f .... and I wanna get: 1a & 2b & 3c 0d & 8e & 4f ..... I would like to use sed and come up with a regular expression that works.... (3 Replies)
Discussion started by: Dedalus
3 Replies

6. Solaris

Solaris; tip

plz explain TIP in solaris in detail. (11 Replies)
Discussion started by: karman0931
11 Replies

7. UNIX for Advanced & Expert Users

if test -f $file_exists

Hi, I have a wiered problem probably unique to me. if test -f "${LOGDIRE}/Component_Name.sql" then echo "<br>Synchronization success<br>" else echo "<br>Sorry! Synchronizing failed" fi Considering, the file is present always, the above condition returns different outputs in each... (1 Reply)
Discussion started by: Nanu_Manju
1 Replies

8. Shell Programming and Scripting

Little bit of a help or just a tip

I am about to do a script that change the COST so i dont need to change each cost. The output looks like this. "OL_ID OL_LINK_COST ----------- ------------ 51 10 52 10 53 10 54 10 55 ... (3 Replies)
Discussion started by: maskot
3 Replies

9. Solaris

tip into 280R

I need to use tip from machine A serial port to machine B serial port. Can someone point me to an example of the correct cable to use? Thanks. (1 Reply)
Discussion started by: dangral
1 Replies

10. UNIX for Dummies Questions & Answers

one teaching Tip

Student have huge interest about why so many expert choose use UNIX than MS Windows. I consider that SHARE & OPEN is key point.:) (2 Replies)
Discussion started by: 111000
2 Replies
Login or Register to Ask a Question