Sponsored Content
Top Forums UNIX for Dummies Questions & Answers find command in shell script doesn't work Post 302557700 by StijnV on Thursday 22nd of September 2011 02:03:33 AM
Old 09-22-2011
find command in shell script doesn't work

Hello all,

Something strange going on with a shell script I'm writing. It's trying to write a list of files that it finds in a given directory to another file. But I also have a skip list so matching files that are in that skip list should be, well uhm, skipped Smilie

Here's the code of my function:
Code:
 build_file_list ()
  {
  FOLDER=${1}
  if [ -d ${FOLDER} ]
  then
    ##build find statement
    SEARCH_STMT="find ${FOLDER} -type f ! -name \".*\" -mtime -${RETENTION} | egrep -vf ${SKIP_FILE}"
    ##SEARCH_STMT="find ${FOLDER} -type f ! -name \".*\" -mtime -${RETENTION}"
    ##find out if folder is serial or mfx
    #echo ${FOLDER}
    echo ${FOLDER} | grep /mfs/ >/dev/null
    if [ $? -eq 0 ] 
    then
      ##folder is mfs, write to temp_mfs file              
                  echo ${SEARCH_STMT} >> ${TEMP_MFS}
    else
      ##folder is serial, write to temp_serial file
                  echo ${SEARCH_STMT} 
                  ${SEARCH_STMT} >> ${TEMP_SERIAL}
    fi
  fi
  }

I've added an echo ${SEARCHT_STMT} for debugging reasons.

It shows me following output
Code:
 find /usr/app/etl/01/OTH/log/tra -type f ! -name ".*" -mtime -10 | egrep -vf /usr/app/etl/01/CLE/par/files_to_skip.par

When I execute this on the command line it works just fine. I get a nice list of files in that directory that have modified within the last 10 days.

However when I call this function in my script I get following error:

Code:
 find /usr/app/etl/01/OTH/log/log -type f ! -name ".*" -mtime -10 | egrep -vf /usr/app/etl/01/CLE/par/files_to_skip.par
  find: bad option |
  find: [-H | -L] path-list predicate-list

Can anyone help me here? How's it possible that when I just run the line it works but from my script it doesn't?

Any help welcome
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

grep doesn't work within shell script?

I am trying to run the following code from a script file but it complains that syntax of (both instances of) grep is wrong. When I copy and paste it to the terminal, it is OK. Any idea what the problem might be? set i = `grep -c #define flags.h` while ($i>20) @ i-- my func (`cat... (4 Replies)
Discussion started by: barisgultekin
4 Replies

2. Shell Programming and Scripting

command line work script doesn't

Hello, I'm stuck and confused as to why when I execute things form the command line it works but when in a script it doesn't. My script: ### creating a lock on the console touch /var/run/console.lock chmod 600 /var/run/console.lock echo "$User" >>... (2 Replies)
Discussion started by: larry
2 Replies

3. UNIX for Dummies Questions & Answers

How to find size of each subdirect? du -sk | ls doesn't work

Using solaris 2.5.1, and how can I get a summary of the size of each subdirectory, say for /export/home, all the users? usually I do a du -sk dirname but I have to manually type in each name, is there a better way? Thanks, (3 Replies)
Discussion started by: kymberm
3 Replies

4. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

5. Shell Programming and Scripting

shell script, echo doesn't work

#!/bin/sh something(){ echo "Inside something" echo $1 $2 } val=$(something "Hello " "world") Output expected: Inside somethingHello world But it's not echoing. (4 Replies)
Discussion started by: cola
4 Replies

6. Shell Programming and Scripting

Why regex pattern doesn't work in find?

$ find /opt/data_* -maxdepth 3 -type d -name "main*" 2> /dev/null /opt/data_025/maindblogs /opt/data_026/maindblogs /opt/data_027/maindblogs /opt/data_028/maindblogs $ find /opt/data_* -maxdepth 3 -type d -name "rvlogs*" 2> /dev/null /opt/data_002/prod/rvlogs2_archive... (4 Replies)
Discussion started by: urello
4 Replies

7. Shell Programming and Scripting

Switching user inside a shell script doesn't seem to work

Linux version : Oracle Linux 6.4 Shell : Bash The following script will be run as root. During the execution, it should switch to oracle user and execute few commands. After googling and searching within unix.com , I came up with the following syntax ## Enclosing all commands in double... (7 Replies)
Discussion started by: John K
7 Replies

8. Shell Programming and Scripting

Ssh remote command doesn't work from script file

I have 10 application servers in a distributed architecture generating their own application logs. Each server has application utility to continuously tail the log. for example following command follows tails and follows new logfiles as they are generated server1$ logutility logtype When I run... (8 Replies)
Discussion started by: indianya
8 Replies

9. HP-UX

Find command doesn't return in shell script.

Hi All, I am using below snippet to search for a string (read from a file 'searchstring.out') in all locations (/) and then iterate over the files found to write the locations and the respective owner to an output file. However, this doesn't work as I believe the find command doesn't exit's... (11 Replies)
Discussion started by: Vipin Batra
11 Replies

10. HP-UX

Su to another user from root doesn't work within shell script

Hello I have a shell script that is run as root. Script rins ok until the point where it have to switch to user "mqm" to run other commands. It just hangs at the point of this line in the script su - mqm -c "dspmq" I ran the same commands at the terminal and they run fine. Any thoughts. (6 Replies)
Discussion started by: mo12
6 Replies
FOLDER(1)							     [nmh-1.5]								 FOLDER(1)

NAME
folder, folders - set/list current folder/message SYNOPSIS
folder [+folder] [msg] [-all | -noall] [-create | -nocreate] [-fast | -nofast] [-header | -noheader] [-recurse | -norecurse] [-total | -nototal] [-list | -nolist] [-push | -pop] [-pack | -nopack] [-print] [-verbose | -noverbose] [-version] [-help] folders is equivalent to folder -all DESCRIPTION
Since the nmh environment is the shell, it is easy to lose track of the current folder from day to day. When folder is given the -print switch (the default), folder will list the current folder, the number of messages in it, the range of the messages (low-high), and the cur- rent message within the folder, and will flag extra files if they exist. An example of this summary is: inbox+ has 16 messages ( 3- 22); cur= 5. If a +folder and/or msg are specified, they will become the current folder and/or message. By comparison, when a +folder argument is given, this corresponds to a "cd" operation in the shell; when no +folder argument is given, this corresponds roughly to a "pwd" operation in the shell. If the specified (or default) folder doesn't exist, the default action is to query the user as to whether the folder should be created; when standard input is not a tty, the answer to the query is assumed to be "yes". Specifying -create will cause folder to create new folders without any query. (This is the easy way to create an empty folder for use later.) Specifying -nocreate will cause folder to exit without creating a non-existant folder. Multiple Folders Specifying -all will produce a summary line for each top-level folder in the user's nmh directory, sorted alphabetically. (If folder is invoked by a name ending with "s" (e.g. folders), -all is assumed). Specifying -recurse with -all will also produce a line for all sub- folders. These folders are all preceded by the read-only folders, which occur as "atr-cur-" entries in the user's nmh context. For exam- ple: FOLDER # MESSAGES RANGE CUR (OTHERS) /var/work/folder has 35 messages ( 1- 35); cur=23. /usr/bugs/Mail has 82 messages ( 1-108); cur=82. ff has no messages. inbox+ has 16 messages ( 3- 22); cur= 5. mh has 76 messages (15- 76); cur=70. notes has 2 messages ( 1- 2); cur= 1. ucom has 124 messages ( 1-124); cur= 6; (others). TOTAL = 339 messages in 7 folders The "+" after inbox indicates that it is the current folder. The "(others)" indicates that the folder ucom has files which aren't mes- sages. These files may either be sub-folders, or files that don't belong under the nmh file naming scheme. The header is output if either a -all or a -header switch is specified. It is suppressed by -noheader. The folder and message totals are output if either a -all or a -total switch is specified. It is suppressed by -nototal. If -fast is given, only the folder name (or names in the case of -all) will be listed. (This is faster because the folders need not be read.) If a +folder is given along with the -all switch, folder will, in addition to setting the current folder, list the top-level subfolders for the current folder (with -norecurse) or list all sub-folders under the current folder recursively (with -recurse). If msg is supplied, together with +folder or without -all, it will become the current message of +folder (if it had been supplied) or the current folder. The -recurse switch lists each folder recursively, so use of this option effectively defeats the speed enhancement of the -fast option, since each folder must be searched for subfolders. Nevertheless, the combination of these options is useful. Compacting a Folder The -pack switch will compress the message names in the designated folders, removing holes in message numbering. The -verbose switch directs folder to tell the user the general actions that it is taking to compress the folder. The Folder Stack The -push switch directs folder to push the current folder onto the folder-stack, and make the +folder argument the current folder. If +folder is not given, the current folder and the top of the folder-stack are exchanged. This corresponds to the "pushd" operation in the shell. The -pop switch directs folder to discard the top of the folder-stack, after setting the current folder to that value. No +folder argument is allowed. This corresponds to the "popd" operation in the shell. The -push switch and the -pop switch are mutually exclusive: the last occurrence of either one overrides any previous occurrence of the other. Both of these switches also set -list by default. The -list switch directs folder to list the contents of the folder-stack. No +folder argument is allowed. After a successful -push or -pop, the -list action is taken, unless a -nolist switch follows them on the command line. This corresponds to the "dirs" operation in the shell. The -push, -pop, and -list switches turn off -print. FILES
$HOME/.mh_profile The user profile PROFILE COMPONENTS
Path: To determine the user's nmh directory Current-Folder: To find the default current folder Folder-Protect: To set mode when creating a new folder Folder-Stack: To determine the folder stack SEE ALSO
refile(1), mhpath(1) DEFAULTS
`+folder' defaults to the current folder `msg' defaults to none `-nofast' `-noheader' `-nototal' `-nopack' `-norecurse' `-noverbose' `-print' is the default if no -list, -push, or -pop is specified `-list' is the default if -push, or -pop is specified CONTEXT
If +folder and/or msg are given, they will become the current folder and/or message. BUGS
There is no way to restore the default behavior (to ask the user whether to create a non-existant folder) after -create or -nocreate is given. MH.6.8 11 June 2012 FOLDER(1)
All times are GMT -4. The time now is 06:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy