Originally Posted by Don Cragun
[...]
Also note that the find command you provided in your 1st posting on this thread:
is using a non-standard extension I've never seen before. On standard versions of the find utility, the first argument to the find utility would have to be the name of a directory.
[...]
Just to add that GNU find defaults to the current directory if no path(s) is/are given (man 1 find):
Thanks for the information.
I perform the vast majority of my programming on OS X, so running the commandman 1 findwill not provide the text that you quoted from the find man page you'll find on a Linux system.
For the record, on OS X (and I imagine on BSD and most UNIX-branded systems) that command line writes diagnostic messages similar to:
to standard error and exits with exit code 1.
I tried ls -lf on a subdirectory of the main directory Music,. and got a huge list of files in 3 columns
The output is in unsorted order.
I then scanned the output for .WAV files ie reading Column 1 from top to bottom, then Column 2 and then Column 3 and it gives the same output as this find command run on the top level directory ..
So does the find command work like this ? It takes the input directory and goes through all sub directories and executes
and filters from that the files of the required type ( here in this case *.WAV)
However, I have another doubt, when I ran the find command on the top level Music Directory, the Music Directory had no *.WAV files in it , but only in the directories beneath it, thus it gave the desired output,. I expected a similar output when I go to the Hindi Music Directory, I thought that find would give me all the *.WAV files in that directory and directories beneath it.
But it just returns one line of the output and throws up and error !
I tried ls -lf on a subdirectory of the main directory Music,. and got a huge list of files in 3 columns
The output is in unsorted order.
I then scanned the output for .WAV files ie reading Column 1 from top to bottom, then Column 2 and then Column 3 and it gives the same output as this find command run on the top level directory ..
Yes. This is exactly what Jim Mcnamara and I have been describing in our posts on this thread.
Quote:
So does the find command work like this ? It takes the input directory and goes through all sub directories and executes
and filters from that the files of the required type ( here in this case *.WAV)
NO! The find utility does not call the ls utility to read directories. The find utility and the ls utility both read directories on their own. (If you want to know what is going on under the covers, look at the opendir() and readdir() functions manual pages on your system.)
The find utility does not sort directory entries after reading them; the ls utility sorts directory entries unless the -f option is in effect.
Quote:
However, I have another doubt, when I ran the find command on the top level Music Directory, the Music Directory had no *.WAV files in it , but only in the directories beneath it, thus it gave the desired output,. I expected a similar output when I go to the Hindi Music Directory, I thought that find would give me all the *.WAV files in that directory and directories beneath it.
But it just returns one line of the output and throws up and error !
could someone please clarify this ?
This is a completely different topic based on the need to use appropriate quoting mechanisms when expanding filenames in the shell (especially when those filenames may contain <space> or <tab> characters like the names of your .WAV files do). When you ask the shell to run the command:
the shell sees an unquoted *.WAV pathname pattern and expands it to a (sorted) list of files in the current directory that match that pattern. Then it calls find with each element of that list as a separate argument.
The find -name primary expects to see a single filename pattern as an argument, but instead you are giving it a list of files. The find utility looked at its arguments, determined that the first filename in the list was to be used as the -name primary's pattern argument, and saw more arguments that didn't match the name of any of find's primaries or operators. Therefore, it gave you a diagnostic message for the second filename expanded from the *.WAV pattern by the shell and quit.
If you use the shell's quoting rules to avoid the shell's pathname pattern matching expansions, you will get what you want. In this case, any of the following:
and well over a hundred other ways of quoting this string will work as you expected.
Note that the behavior of the command you gave without quoting *.WAV will vary depending on how many files match the pattern in the directory where you run the command. If there aren't any files matching that pattern in the directory where you ran the command (such as your top level music directory, you'll get what you wanted because the pattern expands to itself when there are no matches. Had there been exactly one file that matched, find would find the file you wanted in the current directory, but would have found *.WAV files in subdirectories only if they had the same name as the file matched in the current directory.
I have to list the files of particular directory using file filter like find -name abc* something and if multiple file exist I also want time of each file up to seconds.
Currently we are getting time up to minutes in AIX is there any way I can get file last modification time up to seconds. (4 Replies)
Hi,
I have a main folder 'home'. Lets say there is a folder 'bin' under 'home'. I want to check the list of files under subdirectories present under the /bin directory created in the last 24 hours.
I am using the following find command under home/bin directory:
find . -mtime -1 -print
... (3 Replies)
Hi,
My apologies if my query is already available on this forum but I am new and could not find.
I need a script to list all directories/sub directories and files with permissions/groups/owners. The script would run from home directory and should capture every directory. How do I do this?
... (4 Replies)
Ok I am just going to explain what I am running step by step
sftp user@hostname
sftp > ls < when I run the command "ls" I get a long listing the old version,
on the new version I get a short listing
how can I change my new version to give me long listing by default (1 Reply)
Hi ,
I am trying to find some files on a remote machine using the find command.
>ssh -q atukuri@remotehostname find /home/atukuri/ -name abc.txt
/home/atukuri/abc.txt
The above command works fine and lists the file, but if I want to do a long listing of files (ls -l) its not working . ... (2 Replies)
I noticed the other day that after i used the find command to search for some files, the computer listed them twice -- first with just the names of the files (meaning ./(then the individual file names), then with the directory name, followed by the file names (./directory name/file name). I was... (2 Replies)
Hi All,
#!/bin/ksh
find /home/other -ls -type f -xdev | sort -nrk7 | head -2 >bigfile.txt
The above is my script, which writes the large file into a file called bigfile.txt. My script contains only the above two lines.
after execution i am getting the output like
find: cannot chdir to... (1 Reply)
----------------------------------------------------------------------
I have tried
find . type -f -exec ls -lrt {} \;
but it listed files recursively ,I need only that dir files not internal dir file.
--------------------------------------------------------------------- (8 Replies)
Hi all ..
As per rule i searched the forum i am not able found out ...
I want to display the year in when listing the files .. when i use ls -lt it is not displaying files with recent 6 month old ..
I know that perderabo has written a script for that if you give that link it will be... (3 Replies)