Count Zero
Count Zero

Reputation: 337

Find -exec and Bash scripts

I'm writing a script in bash. I invoke it with

find *.zip -type f -exec ./myscript.sh {} \;

At the top of my script I invoke another script like this:

#!/bin/bash
. ticktick.sh

I get the following error

.: ticktick.sh: file not found

If I invoke the script like this

./myscript.sh somefile.zip

it works If I put the ticktick.sh script in my path in another directory it breaks, so that isn't an option. Is there some special kind of context that scripts called with a find have? I'm obviously new to BASH scripting. Any help would be appreciated

Upvotes: 0

Views: 2530

Answers (1)

drjd
drjd

Reputation: 399

I think there are 2 problems.

1.: if you want to search for all zip files in the current directory, you have to write the following command

find . -type f -name *.zip -exec ...

2.: you execute myscript.sh with ./ before it. So myscript.sh has to be in the current working directory. if your script is in /home/jd/ and you execute it from /home/ your myscript.sh will be not found. first you have to determine the directory of your files:

install_path=$(dirname $(readlink -f $0))

So your complete find command is:

find . -type f -name *.zip -exec $install_path/myscript.sh {} \;

The myscript.sh file have to be in the same directory as ticktick.sh

Upvotes: 1

Related Questions