08-20-2010
Help - Using Find command on dynamic files on KSH
Hi Forum.
When I run the following find command, I get the desired results:
find . \( -name a.out -o -name '*.o' -o -name 'core' \) -type f -ls
I want for my script to dynamically calculate and assign a variable var1 to contain all the files that I want to search instead of hard-coding.
For ex:
var1="-name a.out -o -name '*.o' -o -name 'core'"
but when trying to execute the following command :
find . "\(" "$var1" "\)" -type f -ls
I'm getting the following error:
find: 0652-017 -name a.out -o -name '*.o' -o -name 'core' is not a valid option.
Please help.
Thank you.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
My requirement is to create a KSH to generate the SQL select statement in oracle with all the columns and optional where condition if given the table name as input to the program
Have any of you worked with a similar requirement? Can you give me some inputs?
Regards,
Kousikan (2 Replies)
Discussion started by: kousikan
2 Replies
2. UNIX for Advanced & Expert Users
Hi experts,
I have a simple shell script as follows.
#!/bin/ksh
FIND_STRING="\( -name 'testfile*.Z' -o -name 'DUMMY_*' \) "
find /tmp -type f $FIND_STRING -print
When I run this with ksh -x testscript, I get the following output.
+ FIND_STRING=\( -name 'testfile*.Z' -o -name... (6 Replies)
Discussion started by: kodermanna
6 Replies
3. Shell Programming and Scripting
I have the following FTP embedded in a Ksh script on AIX 5.3
ftp -n <<WHATEVER
open 10.101.26.218
user hcistats *******
ascii
put $thupdatefile
put $thcollectfile
quit
WHATEVER
Here is what my script returns:
... (3 Replies)
Discussion started by: troym72
3 Replies
4. Shell Programming and Scripting
set -A allfiles `find $usrhtml -type f`
i am trying to populate this array with the find command. It works fine when find is looking through a single directory but when i add a new subdirectory the files in the subdirectory get duplicated. Can anyone help me and fix this so each files in... (1 Reply)
Discussion started by: bjhum33
1 Replies
5. Shell Programming and Scripting
Hi there,
I'm encountering problems on an AIX system when using following in my script.
find . -name *.edi -type f -exec sh -c 'scp {} $user@$server:$path || exit 5; mv {} $sent || exit 7' \;
the error i get is following
find: 0652-018 An expression term lacks a required... (4 Replies)
Discussion started by: Kerberos
4 Replies
6. Shell Programming and Scripting
Hi!
I made a shell script which is offering menu choice. I made it on RHEL & then with little bit changes I was able to run successfully on AIX/ksh.
Script is working fine with no issues other than a little one i.e., There is one choice in which I can list out and delete some files from a... (10 Replies)
Discussion started by: sukhdip
10 Replies
7. Shell Programming and Scripting
Hello,
I am trying to use regex wtih find command in KSH. For some reason it is not working as expected.
Input:
comm_000_abc_0102.c
comm_000_abc.c
456_000_abc_1212.cpp
456_000_abc_.cpp
Expected Output:
comm_000_abc_0102.c
kkm_000_abc_8888.cpp
(Basically I want to find all... (6 Replies)
Discussion started by: vinay4889
6 Replies
8. Shell Programming and Scripting
Hi ,
I've learnt that the following command will remove the files from the given folder for given no.of days
find /home/etc -type f -atime -10 -exec rm -f {} \;
But how can I change the above command that will move the files to another specified directory instead of removing the... (1 Reply)
Discussion started by: smile689
1 Replies
9. Shell Programming and Scripting
Hello,
Hitting a wall on this one. When at the command prompt it works fine:
# find /home/testuser -name 'PAINT*canvasON.txt'
/home/testuser/PAINT_canvasON.txt
# pwd
/home/testuser
# ls -l PAINT*canvasON.txt
-rw-r--r-- 1 root user 23 Feb 07 02:58 PAINT_canvasON.txt... (2 Replies)
Discussion started by: seekryts15
2 Replies
10. Shell Programming and Scripting
Hello there wonderful people,
I am running on Solaris 10 and with the following ksh version:
strings /bin/ksh | grep Version | tail -2
@(#)Version M-11/16/88i
Suppose I want to copy files that end in _v2 from underneath /dir1/dir2/save directory to /dir1/dir2. Basically, what I’m... (12 Replies)
Discussion started by: ejianu
12 Replies
LEARN ABOUT CENTOS
shell-quote
SHELL-QUOTE(1) User Contributed Perl Documentation SHELL-QUOTE(1)
NAME
shell-quote - quote arguments for safe use, unmodified in a shell command
SYNOPSIS
shell-quote [switch]... arg...
DESCRIPTION
shell-quote lets you pass arbitrary strings through the shell so that they won't be changed by the shell. This lets you process commands
or files with embedded white space or shell globbing characters safely. Here are a few examples.
EXAMPLES
ssh preserving args
When running a remote command with ssh, ssh doesn't preserve the separate arguments it receives. It just joins them with spaces and
passes them to "$SHELL -c". This doesn't work as intended:
ssh host touch 'hi there' # fails
It creates 2 files, hi and there. Instead, do this:
cmd=`shell-quote touch 'hi there'`
ssh host "$cmd"
This gives you just 1 file, hi there.
process find output
It's not ordinarily possible to process an arbitrary list of files output by find with a shell script. Anything you put in $IFS to
split up the output could legitimately be in a file's name. Here's how you can do it using shell-quote:
eval set -- `find -type f -print0 | xargs -0 shell-quote --`
debug shell scripts
shell-quote is better than echo for debugging shell scripts.
debug() {
[ -z "$debug" ] || shell-quote "debug:" "$@"
}
With echo you can't tell the difference between "debug 'foo bar'" and "debug foo bar", but with shell-quote you can.
save a command for later
shell-quote can be used to build up a shell command to run later. Say you want the user to be able to give you switches for a command
you're going to run. If you don't want the switches to be re-evaluated by the shell (which is usually a good idea, else there are
things the user can't pass through), you can do something like this:
user_switches=
while [ $# != 0 ]
do
case x$1 in
x--pass-through)
[ $# -gt 1 ] || die "need an argument for $1"
user_switches="$user_switches "`shell-quote -- "$2"`
shift;;
# process other switches
esac
shift
done
# later
eval "shell-quote some-command $user_switches my args"
OPTIONS
--debug
Turn debugging on.
--help
Show the usage message and die.
--version
Show the version number and exit.
AVAILABILITY
The code is licensed under the GNU GPL. Check http://www.argon.org/~roderick/ or CPAN for updated versions.
AUTHOR
Roderick Schertler <roderick@argon.org>
perl v5.16.3 2010-06-11 SHELL-QUOTE(1)