1) alister is quite right. His expression will indeed do the same as mine (if within the entire path). It may be useful to know that GNU find shares aspects of regular expressions with the grep family.
2) Misinterpretation is best avoided by the questioner providing examples.
Best wishes ... cheers, drl
---------- Post updated at 18:46 ---------- Previous update was at 18:24 ----------
Hi.
If we are looking at the contents of the files, then my preference is to look at the content only once. Here's a script that does that. It uses a command that is available in Debian repositories.
Code:
#!/usr/bin/env bash
# @(#) s3 Demonstrate finding files containing two specific characters.
# See: http://www.incava.org/projects/glark/
# Uncomment to run script as external user.
# export PATH="/usr/local/bin:/usr/bin:/bin"
# Infrastructure details, environment, commands for forum posts.
set +o nounset
pe() { for i;do printf "%s" "$i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe ; pe "Environment: LC_ALL = $LC_ALL, LANG = $LANG"
pe "(Versions displayed with local utility \"version\")"
c=$( ps | grep $$ | awk '{print $NF}' )
version >/dev/null 2>&1 && s=$(_eat $0 $1) || s=""
[ "$c" = "$s" ] && p="$s" || p="$c"
version >/dev/null 2>&1 && version "=o" $p find glark
set -o nounset
# Sample data files, using head & tail as a last resort.
pl " Files containing data \"A\" or \"B\":"
pe
specimen t* \
|| { pe "(head/tail)"; head -n 5 t*; pe " ||"; tail -n 5 t*; }
pl " Results of finding A and B contained in files, glark:"
find . -type f |
egrep -v '[sr]' | # don't look at scripts
xargs glark -l --and=-1 "A" "B" --end-of-and
exit 0
producing:
Code:
% ./s3
Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution : Debian GNU/Linux 5.0
GNU bash 3.2.39
find (GNU findutils) 4.4.0
glark, version 1.8.0
-----
Files containing data "A" or "B":
Whole: 5:0:5 of 3 lines in file "t1"
A
1
B
Whole: 5:0:5 of 3 lines in file "t2"
B
2
A
Whole: 5:0:5 of 1 lines in file "t3"
AB
Whole: 5:0:5 of 1 lines in file "t4"
BA
Whole: 5:0:5 of 2 lines in file "t5"
A
b
Whole: 5:0:5 of 2 lines in file "t6"
a
B
-----
Results of finding A and B contained in files, glark:
./t4
./t3
./t2
./t1
If glark is not available to your package manager, see the URL in the script ... cheers, drl
Hi,
I want to be able to list all the names in a file which begin with a capital letter, but I don't want it to list words that begin a new sentence. Is there any way round this?
Thanks for your help. (1 Reply)
I have a file that contains the following:
Mon Dec 3 15:52:57 PST 2o007: FAILED TO PROCESSED FILE 200712030790881200.TXT - exit code=107
Tue Dec 4 09:08:57 PST 2007: FAILED TO PROCESSED FILE 200712030790879200a.TXT - exit code=107
This file also has a lot more stuff since it is a log file.... (2 Replies)
Hi,
I am trying to find the content of file using grep and find command and list only the file names
but i am getting entire file list of files in the directory
find . -exec grep "test" {} \; -ls
Can anyone of you correct this (2 Replies)
Hi All,
I have a file like this,(This is a sql output file)
cat query_file
200000029
12345 10001
0.2 0
I want to fetch the values 200000029,10001,0.2 .I tried using the below code but i could get... (2 Replies)
Hi
I have a script where the user calls it with arguments like so:
./import.sh -s DNSNAME -d DBNAME
I want to check that the database entered is valid by going through a passwd.ds file and checking if the database exists there.
If it doesn't, the I need to send a message to my log... (4 Replies)
I have the need to search a text file from my unix script to determine if it contains the strings of: 'ERROR' and/or 'WARNING'.
By using Grep I can search the file and return a where one of these strings exists. Like this:
cat myfile.txt | grep ERROR
Output:
PROCESS ERROR HERE ... (3 Replies)
Hi,
As a newbie, I'm desperate ro make my shell script work. I'd like a script which checks all the files in a directory, check the file name, if the file name ends with "extracted", store it in a variable, if it has a suffix of ".roi" stores in another variable. I'm going to use these two... (3 Replies)
Hy there all. Im new here. Olso new to terminal & bash, but it seams that for me it's much easyer to undarsatnd scripts than an actual programming language as c or anyother languare for that matter.
S-o here is one og my home works s-o to speak.
Write a shell script which:
-only works as a... (1 Reply)
Being new to the forum, I tried finding a solution to find files containing 2 words not necessarily on the same line.
This thread
"List all file names that contain two specific words."
answered it in part, but I was looking for a more concise solution.
Here's a one-line suggestion... (8 Replies)
I have the file like this.
cat 123.txt
<p> <table border='1' width='90%' align='center' summary='Script output'> <tr><td>text </td> </tr> </table> </p>
I want to replace some tags and want the output like below. I tried with awk & sed commands. But no luck. Could someone help me on this?
... (4 Replies)
Discussion started by: thomasraj87
4 Replies
LEARN ABOUT OPENSOLARIS
tail
tail(1) User Commands tail(1)NAME
tail - deliver the last part of a file
SYNOPSIS
/usr/bin/tail [+-s number [lbcr]] [file]
/usr/bin/tail [-lbcr] [file]
/usr/bin/tail [+- number [lbcf]] [file]
/usr/bin/tail [-lbcf] [file]
/usr/xpg4/bin/tail [-f | -r] [-c number | -n number] [file]
/usr/xpg4/bin/tail [+- number [l | b | c] [f]] [file]
/usr/xpg4/bin/tail [+- number [l] [f | r]] [file]
DESCRIPTION
The tail utility copies the named file to the standard output beginning at a designated place. If no file is named, the standard input is
used.
Copying begins at a point in the file indicated by the -cnumber, -nnumber, or +-number options (if +number is specified, begins at distance
number from the beginning; if -number is specified, from the end of the input; if number is NULL, the value 10 is assumed). number is
counted in units of lines or byte according to the -c or -n options, or lines, blocks, or bytes, according to the appended option l, b,
or c. When no units are specified, counting is by lines.
OPTIONS
The following options are supported for both /usr/bin/tail and /usr/xpg4/bin/tail. The -r and -f options are mutually exclusive. If both
are specified on the command line, the -f option is ignored.
-b Units of blocks.
-c Units of bytes.
-f Follow. If the input-file is not a pipe, the program does not terminate after the line of the input-file has been copied, but enters
an endless loop, wherein it sleeps for a second and then attempts to read and copy further records from the input-file. Thus it can
be used to monitor the growth of a file that is being written by some other process.
-l Units of lines.
-r Reverse. Copies lines from the specified starting point in the file in reverse order. The default for r is to print the entire file
in reverse order.
/usr/xpg4/bin/tail
The following options are supported for /usr/xpg4/bin/tail only:
-c number The number option-argument must be a decimal integer whose sign affects the location in the file, measured in bytes, to begin
the copying:
+ Copying starts relative to the beginning of the file.
- Copying starts relative to the end of the file.
none Copying starts relative to the end of the file.
The origin for counting is 1; that is, -c+1 represents the first byte of the file, -c-1 the last.
-n number Equivalent to -cnumber, except the starting location in the file is measured in lines instead of bytes. The origin for count-
ing is 1. That is, -n+1 represents the first line of the file, -n-1 the last.
OPERANDS
The following operand is supported:
file A path name of an input file. If no file operands are specified, the standard input is used.
USAGE
See largefile(5) for the description of the behavior of tail when encountering files greater than or equal to 2 Gbyte ( 2^31 bytes).
EXAMPLES
Example 1 Using the tail Command
The following command prints the last ten lines of the file fred, followed by any lines that are appended to fred between the time tail is
initiated and killed.
example% tail -f fred
The next command prints the last 15 bytes of the file fred, followed by any lines that are appended to fred between the time tail is initi-
ated and killed:
example% tail -15cf fred
ENVIRONMENT VARIABLES
See environ(5) for descriptions of the following environment variables that affect the execution of tail: LANG, LC_ALL, LC_CTYPE, LC_MES-
SAGES, and NLSPATH.
EXIT STATUS
The following exit values are returned:
0 Successful completion.
>0 An error occurred.
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
/usr/bin/tail
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWcsu |
+-----------------------------+-----------------------------+
|CSI |Enabled |
+-----------------------------+-----------------------------+
/usr/xpg4/bin/tail
+-----------------------------+-----------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+-----------------------------+-----------------------------+
|Availability |SUNWxcu4 |
+-----------------------------+-----------------------------+
|CSI |Enabled |
+-----------------------------+-----------------------------+
|Interface Stability |Standard |
+-----------------------------+-----------------------------+
SEE ALSO cat(1), head(1), more(1), pg(1), dd(1M), attributes(5), environ(5), largefile(5), standards(5)NOTES
Piped tails relative to the end of the file are stored in a buffer, and thus are limited in length. Various kinds of anomalous behavior can
happen with character special files.
SunOS 5.11 13 Jul 2005 tail(1)