An issue with find command.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting An issue with find command.
# 1  
Old 12-16-2002
An issue with find command.

Hi all,

I have a shell script(ksh) which has the code as follows.
------------------
cd $mydir

for i in `find ./ -type f -mtime +$k`
do
echo $i
done
-----------------------

And in $mydir , i have some files which have space in theie names like "Case att15".

The out put of the script is
./Case
./att15
where as i want the script to recognise the file as a single file.

I think this has something to do with IFS.
Can anyone pls. suggest what do i need to do??

Thanks in advance,
raju
# 2  
Old 12-16-2002
It is very hard to support files with white space characters in their names. The case you mentioned can be handled with:
Code:
#! /usr/bin/ksh
IFS=""
find . -type f -mtime +$k | while read i ; do
      echo $i
done

# 3  
Old 12-17-2002
I suspect you want to do more ... sophisticated processing in the loop than just echoing the file name. With that in mind, I suggest this slight modification to Perderabo's code:
Code:
find . -type f -mtime +$k | while read i ; do
    echo "$i"
done

I.e., for doing things with the files, you need to quote each file name as it comes through.
# 4  
Old 12-17-2002
See? I told you this was hard...

Good catch, criglerj! Actually those quotes in the echo statement are needed just to print the name if there are several contiguous spaces.
# 5  
Old 12-17-2002
Re: See? I told you this was hard...

Quote:
Originally posted by Perderabo
Actually those quotes in the echo statement are needed just to print the name if there are several contiguous spaces.
Thanks for that addition. After I read your reply, I checked it and you were right, of course. I'm glad to learn that!
# 6  
Old 12-19-2002
hi,

by th way, you can get into trouble if changing the IFS, because the shell needs it sometimes for her work (iīm german so i donīt know exactly if shell is male or female, but sometimes the shell reacts as a female Smilie ) so make before a copy and undo it afterwards like this

Code:
OIFS="$IFS"
IFS=""
..
code
..
IFS="$OIFS"

cu
# 7  
Old 12-19-2002
Actually, it is old Bourne shell that misbehaves if you change IFS. The Korn shell does not use IFS to intrepret the commands in the script. I often set IFS="" at the top of a ksh script and leave set to that value until I need a different value.

This mostly happens in two cases: when I want to split the data obtained via a "read" statement into words, and when I want to initialize an array with words that are all currently stored in a single variable. An occaisional third case is in some very complex uses of "eval".

Other than that, there is no harm in setting IFS as long as you are using ksh.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find command issue

Hi Guys, I have a file called error.logs. am just trying to display the content in the file which was modified last 1 day. I tried below command but it doesnt give the proper output. find /u/text/vinoth/bin "error.logs" -mtime -1 -exec cat {} \; >> mail.txt Any help is much... (21 Replies)
Discussion started by: Vinoth Kumar G
21 Replies

2. Shell Programming and Scripting

Issue in Find and mv command

Hi I am using the below code to find mv the files. Files are moving to the Target location as expected but find is displaying some errors like below. find ./ -name "Archive*" -mtime +300 -exec mv {} /mnt/X/ARC/ \; find: `./Archive_09-30-12': No such file or directory find:... (6 Replies)
Discussion started by: rakeshkumar
6 Replies

3. Shell Programming and Scripting

Find command issue

Guys, Here is my requirement.. Sample.cfg file="*log.gz *txt.gz" sample.sh #!/bin/sh . $HOME/Sample.cfg find . -name "$file" -mtime +20 -exec ls -la {} \; Its not finding the given *log.gz and txt.gz files. Could anyone please help me? (8 Replies)
Discussion started by: AraR87
8 Replies

4. Shell Programming and Scripting

Performance issue while using find command

Hi, I have created a shell script for Server Log Automation Process. I have used find xargs grep command to search the string. for Example, find -name | xargs grep "816995225" > test.txt . Here my problem is, We have lot of records and we want to grep the string... (4 Replies)
Discussion started by: nanthagopal
4 Replies

5. Linux

find command issue

Hi, I am not root user. I am trying to find the file which has contains pattern "fvsfile" in root directory. If i run the find cmd then i got permission denied and all the files are listed include pattern files. i cant get file name yet find . print | xargs grep -i "fvsfile" I want... (2 Replies)
Discussion started by: Mani_apr08
2 Replies

6. Shell Programming and Scripting

Issue with Find Command

Hi All, I'm a bit new to Linux environment, moderately okay when it comes to Unix AIX. I'm facing an issue while trying to run a simple find command: $ for file in `find . -name *.*` > do > ls $file > done This is throwing the following error: Strangely, a few minutes... (4 Replies)
Discussion started by: adi_2_chaos
4 Replies

7. UNIX for Dummies Questions & Answers

Find command issue

I am currently using below command to get the 1st three characters of a file(PDM). Issue is, when i use find command in root dir, it finds all the files in sub dir also. How to limit the find command search to a given path only(ie: say only find file in apps/cmplus/datamigration/data path... (3 Replies)
Discussion started by: abhi_n123
3 Replies

8. Shell Programming and Scripting

Issue with Find command on Linux

Hi, I am issuing find command below mentioned ways but it givs different count. I don't understand the behaviour. Could any one have any clue? $ find . -mtime -5 -maxdepth 1 -exec ls -lrt {} \; | wc -l 169 $ find . -mtime -5 -maxdepth 1 | wc -l 47 $ find . -mtime -5 -maxdepth 1 | wc -l... (2 Replies)
Discussion started by: siba.s.nayak
2 Replies

9. UNIX for Dummies Questions & Answers

Extrange Find command Issue

Hi all, i'm new at shell scripting world... I'm working on a script for searching old files on a server, this scripts runs with a configuration file wich indicates where to search the files, the script should search for all files that are older than an x qty of days, and the only clue that i have... (9 Replies)
Discussion started by: juanklavera
9 Replies

10. UNIX for Dummies Questions & Answers

Issue with find command using links

Hi, Having a simple issue with find command on Sun. The command works fine if the variable is set to the actual filesystem but fails when the variable is set to a link which is pointing to the same filesystem. export DUMPDEST=/oradata1/exports/pbm - Set the variable ... (2 Replies)
Discussion started by: win_vin
2 Replies
Login or Register to Ask a Question