11-16-2010
Quote:
Originally Posted by
ctsgnb
ls command should be coded to be able to handle huge number of argument.
It's an operating system limitation. They can't. Ergo, you should program in ways that don't cram potentially unlimited numbers of arguments into a commandline. In some shells, you can get away with cramming billions of arguments into a builtin (and ONLY a builtin), but you really can't depend on that.
Bad:
cat * > output
Good:
ls | xargs cat > output xargs understands maximum arguments and can split them intelligently across several cat calls.
The same goes for things like
for LINE in `cat foo` ; do ... ; done when foo exceeds 4K in size you may discover the maximum size of a shell variable on your system. Instead:
while read LINE ; do ... ; done < foo
Essentially the idea's the same in all cases: Never force the shell to hold an entire anything in memory. (That actually applies to most programming languages, but shell makes it deceivingly easy to do so...) You'll hit walls at inconvenient times and it's never efficient. Process in bits.
Last edited by Corona688; 11-16-2010 at 04:16 PM..
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a task to move more than 35000 files every two hours, from the same directory to another directory based on a file that has the list of filenames
I tried the following logics
(1)
find . -name \*.dat > list
for i in `cat list` do mv $i test/ done
(2)
cat list|xargs -i mv "{}"... (7 Replies)
Discussion started by: bryan
7 Replies
2. Shell Programming and Scripting
I have a large Filesystem on an AIX server and another one on a Red Hat box. I have syncd the two filesystems using rsysnc.
What Im looking for is a script that would compare to the two filesystems to make sure the bits match up and the number of files match up.
its around 2.8 million... (5 Replies)
Discussion started by: zippdawg2001
5 Replies
3. Shell Programming and Scripting
Hi
I am new to shell scripting.I want to create a batch file which creates a desired number of files with a specific size say 1MB each to consume space.How can i go about it using for loop /any other loop condition using shell script?
Thanks (3 Replies)
Discussion started by: swatideswal
3 Replies
4. Shell Programming and Scripting
Hi,
i have more than 1000 data files(.txt) like this
first file format:
178.83 554.545
179.21 80.392
second file:
178.83 990.909
179.21 90.196
etc.
I want to combine them to the following format:
178.83,554.545,990.909,...
179.21,80.392,90.196,... (7 Replies)
Discussion started by: mr_monocyte
7 Replies
5. UNIX for Dummies Questions & Answers
I want to tar large number of files about 150k.
i am using the find command as below to create a file with all file names.
& then trying to use the tar -I command as below.
# find . -type f -name "gpi*" > include-file
# tar -I include-file -cvf newfile.tar
This i got from one of the posts... (2 Replies)
Discussion started by: crux123
2 Replies
6. UNIX for Dummies Questions & Answers
Hi. I need to delete a large number of files listed in a txt file. There are over 90000 files in the list. Some of the directory names and some of the file names do have spaces in them.
In the file, each line is a full path to a file:
/path/to/the files/file1
/path/to/some other/files/file 2... (4 Replies)
Discussion started by: inakajin
4 Replies
7. Shell Programming and Scripting
Hi All,
I have searched this forum for related posts but could not find one that fits mine. I have a shell script which removes all the XML tags including the text inside the tags from some 4 million XML files.
The shell script looks like this (MODIFIED):
find . "*.xml" -print | while read... (6 Replies)
Discussion started by: shoaibjameel123
6 Replies
8. UNIX for Dummies Questions & Answers
Hi,
I have a large number of subdirectories (>200), and in each of these directories there is a file with a name like "opp1234.dat".
I'd like to know how I could change the names of these files to say "out.dat" in all these subdirectories in one go.
Thanks! (5 Replies)
Discussion started by: lost.identity
5 Replies
9. Shell Programming and Scripting
Want to sftp large number of files ... approx 150 files will come to server every minute. (AIX box)
Also need make sure file has been sftped successfully...
Please let me know :
1. What is the best / faster way to transfer files?
2. should I use batch option -b so that connectivity will be... (3 Replies)
Discussion started by: vegasluxor
3 Replies
10. Shell Programming and Scripting
Hi All,
I am having a situation now to delete a huge number of temp files created during run times approx. 16700+ files. We have never imagined that we will get this this much big list of files during run time. It worked fine for lesser no of files in the list. But when list is huge we are... (7 Replies)
Discussion started by: mad man
7 Replies
LEARN ABOUT REDHAT
lfcompile64
lfcompile64(5) Standards, Environments, and Macros lfcompile64(5)
NAME
lfcompile64 - transitional compilation environment
DESCRIPTION
All 64-bit applications can manipulate large files by default. The transitional interfaces described on this page can be used by 32-bit and
64-bit applications to manipulate large files.
In the transitional compilation environment, explicit 64-bit functions, structures, and types are added to the API. Compiling in this
environment allows both 32-bit and 64-bit applications to access files whose size is greater than or equal to 2 Gbyte ( 2**31 bytes).
The transitional compilation environment exports all the explicit 64-bit functions (xxx64()) and types in addition to all the regular func-
tions (xxx()) and types. Both xxx() and xxx64() functions are available to the program source. A 32-bit application must use the xxx64()
functions in order to access large files. See the lf64(5) manual page for a complete listing of the 64-bit transitional interfaces.
The transitional compilation environment differs from the large file compilation environment, wherein the underlying interfaces are bound
to 64-bit functions, structures, and types. An application compiled in the large file compilation environment is able to use the xxx()
source interfaces to access both large and small files, rather than having to explicitly utilize the transitional xxx64() interface calls
to access large files. See the lfcompile(5) manual page for more information regarding the large file compilation environment.
Applications may combine objects produced in the large file compilation environment with objects produced in the transitional compilation
environment, but must be careful with respect to interoperability between those objects. Applications should not declare global variables
of types whose sizes change between compilation environments.
For applications that do not wish to conform to the POSIX or X/Open specifications, the 64-bit transitional interfaces are available by
default. No compile-time flags need to be set.
Access to Additional Large File Interfaces
Applications that wish to access the transitional interfaces as well as the POSIX or X/Open specification-conforming interfaces should use
the following compilation methods and set whichever feature test macros are appropriate to obtain the desired environment (see stan-
dards(5)).
o Set the compile-time flag _LARGEFILE64_SOURCE to 1 before including any headers.
o Use the getconf(1) command with one or more of the following arguments:
+------------------+----------------------------------------+
| argument | purpose |
|LFS64_CFLAGS | obtain compilation flags necessary to |
| | enable the transitional compilation |
| | environment |
|LFS64_LDFLAGS | obtain link editor options |
|LFS64_LIBS | obtain link library names |
|LFS64_LINTFLAGS | obtain lint options |
+------------------+----------------------------------------+
EXAMPLES
In the following examples, the transitional compilation environment is accessed by invoking the getconf utility with one of the arguments
listed in the table above. The additional large file interfaces are accessed either by specifying -D_LARGEFILE64_SOURCE or by invoking the
getconf utility with the arguments listed above.
The example that uses the form of command substitution specifying the command within parentheses preceded by a dollar sign can be executed
only in a POSIX-conforming shell such as the Korn Shell (see ksh(1)). In a shell that is not POSIX-conforming, such as the Bourne Shell
(see sh(1)) and the C Shell (see csh(1)), the command must be enclosed within grave accent marks.
Example 1: An example of compiling a program using transitional interfaces such as lseek64() and fopen64():
$ c89 -D_LARGEFILE64_SOURCE
$(getconf LFS64_CFLAGS) a.c
$(getconf LFS64_LDFLAGS)
$(getconf LFS64_LIBS)
Example 2: An example of running lint on a program using transitional interfaces:
% lint -D_LARGEFILE64_SOURCE
`getconf LFS64_LINTFLAGS` ...
`getconf LFS64_LIBS`
SEE ALSO
getconf(1), lseek(2), fopen(3C), lf64(5), standards(5)
SunOS 5.10 26 Jan 1998 lfcompile64(5)