parallel: Implemented $PARALLEL_SEQ and $PARALLEL_PID.

-v now only show the command to be run. Use -vv to see the surrounding ssh wrapping.
--workdir implemented. Spelling mistakes.
This commit is contained in:
Ole Tange 2010-10-27 01:50:58 +02:00
parent 87747a44b4
commit f085a37a40
22 changed files with 811 additions and 363 deletions

View file

@ -1,7 +1,27 @@
== Bug ==
parallel: Implemented $PARALLEL_SEQ and $PARALLEL_PID.
-v now only show the command to be run. Use -vv to see the surrounding ssh wrapping.
--workdir implemented. Spelling mistakes.
== Compare ==
http://code.google.com/p/spawntool/
http://code.google.com/p/push/
== Bug? ==
.parallel/config with --long-options
time find . -type f | parallel -j+0 --eta -S..,: --progress --trc {}.gz gzip {}
== Bug --eta ==
Only negative.
== Workdir ==
Bug: {2} in --return
parallel -N2 --workdir ... --cleanup --transfer --return {2}.2 -S .. -v echo {} ">{2}.2" ::: ./tmp/foo ./tmp/bar
(echo ; echo abc ; echo abc; echo ; echo bbc) | parallel --colsep b -v echo {1}{2}
(echo ; echo abc ; echo abc; echo ; echo bbc) | parallel --colsep d -v echo {1}{2}
== SQL ==

View file

@ -117,7 +117,9 @@ cc:Peter Simons <simons@cryp.to>, Sandro Cazzaniga <kharec@mandriva.org>,
Markus Ammer <mkmm@gmx-topmail.de>, Pavel Nuzhdin <pnzhdin@gmail.com>,
Phil Sung <psung@alum.mit.edu>, Michael Shigorin <mike@altlinux.org>,
Andrew McFague <amcfague@wgen.net>, Steven M. Christensen <sunfreeware@gmail.com>,
Chris Howey <howeyc@gmail.com>
Chris Howey <howeyc@gmail.com>, Fethican Coşkuner <fethicanc@gmail.com>,
Rogério Brito <rbrito@ime.usp.br>, Jonathan Palardy <jonathan.palardy@gmail.com>,
Koen Vervloesem <koen@vervloesem.eu>,
Subject: GNU Parallel 2010XXXX released
@ -126,11 +128,46 @@ download at: http://ftp.gnu.org/gnu/parallel/
New in this release:
* Using -j myfile the number of jobs can be changed while GNU Parallel
is running simply by changing the content of myfile.
* Slow spawning error is now only a warning.
* If stdin is a tty and input is read from stdin you now get a
warning.
* GNU sql: \n and \x0a in arguments is replaced with newline.
* Patch for Debian package and spelling mistakes. Thanks to Rogério
Brito <rbrito at ime dot usp dot br>
* Mac OS X Homebrew package. Thanks to Jonathan Palardy <jonathan dot
palardy at gmail dot com>
* FreeBSD port. Thanks to Chris Howey <howeyc at gmail dot com>
* First review on print:
* Pardus package. Thanks to Fethican Coşkuner
<fethicanc at gmail dot com>
* First review in Chinese. Thanks to 曾義峰:
http://antbsd.twbbs.org/~ant/wordpress/?p=2876
* First review in print:
http://www.linux-magazine.com/Issues/2010 Nov 2010
* First review in Spanish:
http://www.muylinux.com/2010/10/18/gnu-parallel-computacion-paralela-a-golpe-de-comando
* First review in Dutch thanks to Koen Vervloesem <koen at vervloesem
dot eu>:
http://techworld.nl/technologie/33493/gebruik-al-je-processorkernen-met-gnu-parallel.html
* 3500 views of the intro video:
http://www.youtube.com/watch?v=OpaiGYxkSuQ
* As usual a bunch of bugfixes and more usage examples in the man
page.
Old in this release:
* See GNU Parallel live at FSCONS 2010-11-07:

View file

@ -18,7 +18,7 @@ B<#!/usr/bin/parallel> --shebang [options] [I<command> [arguments]]
=head1 DESCRIPTION
GNU B<parallel> is a shell tool for executing jobs in parallel locally
GNU B<parallel> is a shell tool for executing jobs concurrently locally
or using remote computers. A job is typically a single command or a
small script that has to be run for each of the lines in the
input. The typical input is a list of files, a list of hosts, a list
@ -28,7 +28,7 @@ If you use B<xargs> today you will find GNU B<parallel> very easy to
use as GNU B<parallel> is written to have the same options as
B<xargs>. If you write loops in shell, you will find GNU B<parallel>
may be able to replace most of the loops and make them run faster by
running several jobs in parallel. If you use B<ppss> or B<pexec> you
running several jobs simultaneously. If you use B<ppss> or B<pexec> you
will find GNU B<parallel> will often make the command easier to read.
GNU B<parallel> makes sure output from the commands is the same output
@ -383,7 +383,7 @@ If B<--semaphore> is set default is 1 thus making a mutex.
Add N to the number of CPU cores. Run this many jobs in parallel. For
compute intensive jobs B<-j> +0 is useful as it will run
number-of-cpu-cores jobs in parallel. See also
number-of-cpu-cores jobs simultaneously. See also
B<--use-cpus-instead-of-cores>.
@ -831,7 +831,7 @@ Use the replacement string I<replace-str> instead of {.} for input line without
=item B<--use-cpus-instead-of-cores>
Count the number of physical CPUs instead of CPU cores. When computing
how many jobs to run in parallel relative to the number of CPU cores
how many jobs to run simultaneously relative to the number of CPU cores
you can ask GNU B<parallel> to instead look at the number of physical
CPUs. This will make sense for computers that have hyperthreading as
two jobs running on one CPU with hyperthreading will run slower than
@ -852,14 +852,15 @@ B<--silent>. See also B<-t>.
Print the version GNU B<parallel> and exit.
=item B<--workdir> I<dir> (unimplemented)
=item B<-W> I<dir> (unimplemented)
=item B<--workdir> I<mydir> (beta testing)
=item B<-W> I<mydir> (beta testing)
Files transferred using B<--transfer> and B<--return> will be relative
to workdir on remote machines, and the command will be executed in
that dir. The special workdir B<...> will create a workdir i
B<~/.parallel/workdirs/> on the remote machines and will be removed if
to I<mydir> on remote machines, and the command will be executed in
that dir. The special workdir B<...> will create a workdir in
B<~/.parallel/tmp/> on the remote machines and will be removed if
using B<--cleanup>.
@ -1130,7 +1131,7 @@ B<cat list | parallel "do_something {} scale {.}.jpg ; do_step2 <{} {.}" | proce
=head1 EXAMPLE: Group output lines
When runnning jobs that output data, you often do not want the output
When running jobs that output data, you often do not want the output
of multiple jobs to run together. GNU B<parallel> defaults to grouping the
output of each job, so the output is printed when the job finishes. If
you want the output to be printed while the job is running you can use
@ -1346,12 +1347,12 @@ Note: The default for GNU B<parallel> is to remove the spaces around the columns
B<parallel -a table_file.tsv --trim n --colsep '\t' cmd -o {2} -i {1}>
=head1 EXAMPLE: Working as cat | sh. Ressource inexpensive jobs and evaluation
=head1 EXAMPLE: Working as cat | sh. Resource inexpensive jobs and evaluation
GNU B<parallel> can work similar to B<cat | sh>.
A ressource inexpensive job is a job that takes very little CPU, disk
I/O and network I/O. Ping is an example of a ressource inexpensive
A resource inexpensive job is a job that takes very little CPU, disk
I/O and network I/O. Ping is an example of a resource inexpensive
job. wget is too - if the webpages are small.
The content of the file jobs_to_run:
@ -1382,7 +1383,7 @@ background, GNU B<sem> will wait for one of these to complete before
starting another command. B<sem --wait> will wait for all jobs to
complete.
Run 10 jobs in parallel in the background:
Run 10 jobs concurrently in the background:
for i in `ls *.log` ; do
echo $i
@ -1531,17 +1532,31 @@ the currently running jobs are finished before exiting.
=over 9
=item $PARALLEL_PID - unimplemented
=item $PARALLEL_PID
The environment variable $PARALLEL_PID is set by GNU B<parallel> and
is visible to the jobs started from GNU B<parallel>. This makes it
possible for the jobs to communicate directly to GNU B<parallel>.
Remember to quote the $, so it gets evaluated by the correct
shell.
B<Example:> If each of the jobs tests a solution and one of jobs finds
the solution the job can tell GNU B<parallel> not to start more jobs
by: B<kill -TERM $PARALLEL_PID>. This only works on the local
computer.
=item $PARALLEL_SEQ
$PARALLEL_SEQ will be set to the sequence number of the job
running. Remember to quote the $, so it gets evaluated by the correct
shell.
B<Example:>
B<seq 1 10 | parallel -N2 echo seq:'$'PARALLEL_SEQ arg1:{1} arg2:{2}>
=item $PARALLEL
The environment variable $PARALLEL will be used as default options for
@ -1786,7 +1801,16 @@ B<xargs> has no support for grouping the output, therefore output may
run together, e.g. the first half of a line is from one process and
the last half of the line is from another process. The example
B<Parallel grep> cannot be done reliably with B<xargs> because of
this.
this. To see this in action try:
parallel perl -e '\$a=\"1{}\"x10000000\;print\ \$a,\"\\n\"' '>' {} ::: a b c d e f
ls -l a b c d e f
parallel -kP4 -n1 grep 1 > out.par ::: a b c d e f
echo a b c d e f | xargs -P4 -n1 grep 1 > out.xargs-unbuf
echo a b c d e f | xargs -P4 -n1 grep --line-buffered 1 > out.xargs-linebuf
echo a b c d e f | xargs -n1 grep --line-buffered 1 > out.xargs-serial
ls -l out*
md5sum out*
B<xargs> has no support for keeping the order of the output, therefore
if running jobs in parallel using B<xargs> the output of the second
@ -2461,7 +2485,7 @@ sub parse_options {
GetOptions("debug|D" => \$::opt_D,
"xargs|m" => \$::opt_m,
"X" => \$::opt_X,
"v" => \$::opt_v,
"v" => \@::opt_v,
"silent" => \$::opt_silent,
"keep-order|keeporder|k" => \$::opt_k,
"group|g" => \$::opt_g,
@ -2524,10 +2548,10 @@ sub parse_options {
"Y|shebang|hashbang" => \$::opt_shebang,
"skip-first-line" => \$::opt_skip_first_line,
) || die_usage();
if(defined @::opt_v) { $Global::verbose = $#::opt_v+1; } # Convert -v -v to v=2
$Global::debug = (defined $::opt_D);
if(defined $::opt_m) { $Global::xargs = 1; }
if(defined $::opt_X) { $Global::Xargs = 1; }
if(defined $::opt_v) { $Global::verbose = 1; }
if(defined $::opt_silent) { $Global::verbose = 0; }
if(defined $::opt_k) { $Global::keeporder = 1; }
if(defined $::opt_g) { $Global::grouped = 1; }
@ -3179,7 +3203,7 @@ sub compute_number_of_processes_for_sshlogins {
}
sub compute_number_of_processes {
# Number of processes wanted and limited by system ressources
# Number of processes wanted and limited by system resources
# Returns:
# Number of processes
my $opt_P = shift;
@ -3622,6 +3646,15 @@ sub undef_as_zero {
return $a ? $a : 0;
}
sub hostname {
if(not $Private::hostname) {
my $hostname = `hostname`;
chomp($hostname);
$Private::hostname = $hostname || "nohostname";
}
return $Private::hostname;
}
sub __RUNNING_AND_PRINTING_THE_JOBS__ {}
# Variable structure:
@ -3994,7 +4027,12 @@ sub start_job {
}
}
if($Global::verbose and not $Global::grouped) {
print STDOUT $command,"\n";
if($Global::verbose == 1) {
print STDOUT $clean_command,"\n";
} else {
# Verbose level > 1: Print the rsync and stuff
print STDOUT $command,"\n";
}
}
$Global::total_running++;
$Global::total_started++;
@ -4008,6 +4046,8 @@ sub start_job {
$Private::job_start_sequence++;
$job_start_sequence = $Private::job_start_sequence;
}
$ENV{'PARALLEL_SEQ'} = $job_start_sequence;
$ENV{'PARALLEL_PID'} = $$;
debug("$Global::total_running processes. Starting ($job_start_sequence): $command\n");
if(@::opt_a and $job_start_sequence == 1) {
# Give STDIN to the first job if using -a
@ -4062,11 +4102,17 @@ sub print_job {
my $out = $fhs->{out};
my $err = $fhs->{err};
my $command = $fhs->{command};
my $clean_command = $fhs->{clean_command};
debug(">>joboutput $command\n");
if($Global::verbose and $Global::grouped) {
print STDOUT $command,"\n";
# If STDOUT and STDERR is merged, we want the command to be printed first
if($Global::verbose == 1) {
print STDOUT $clean_command,"\n";
} else {
# Verbose level > 1: Print the rsync and stuff
print STDOUT $command,"\n";
}
# If STDOUT and STDERR are merged, we want the command to be printed first
# so flush to avoid STDOUT being buffered
flush STDOUT;
}
@ -4120,6 +4166,7 @@ sub get_command_line_with_sshlogin {
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
my ($pre,$post)=("","");
if($next_command_line and $serverlogin ne ":") {
$Global::transfer_seq++;
for my $file (@$args_ref) {
if($::opt_transfer) {
# --transfer
@ -4138,13 +4185,39 @@ sub get_command_line_with_sshlogin {
# We need to save the exit status of the job
$post = '_EXIT_status=$?; '.$post.' exit $_EXIT_status;';
}
return ($pre . "$sshcmd $serverlogin "
.shell_quote($next_command_line).";".$post,$clean_command);
my $parallel_env = 'PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;'.
'PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\;';
if($::opt_workdir) {
return ($pre . "$sshcmd $serverlogin $parallel_env ".shell_quote("cd ".workdir()." && ")
.shell_quote($next_command_line).";".$post,$clean_command);
} else {
return ($pre . "$sshcmd $serverlogin $parallel_env "
.shell_quote($next_command_line).";".$post,$clean_command);
}
} else {
return ($next_command_line,$clean_command);
}
}
sub workdir {
# Returns:
# the workdir on a remote machine
my $workdir;
if(defined $::opt_workdir) {
if($::opt_workdir ne "...") {
$workdir = $::opt_workdir;
$workdir =~ s:/\./:/:g; # Rsync treats /./ special. We dont want that
$workdir =~ s:/+$::; # Remove ending / if any
$workdir =~ s:^\./::g; # Remove starting ./ if any
} else {
$workdir = ".parallel/tmp/".hostname()."-".$$."-".$Global::transfer_seq;
}
} else {
$workdir = ".";
}
return $workdir;
}
sub get_command_line {
# Returns:
# next command line
@ -4424,7 +4497,9 @@ sub control_path_dir {
# Returns:
# path to directory
if(not $Private::control_path_dir) {
$Private::control_path_dir = tempdir("/tmp/parallel-ssh-XXXX", CLEANUP => 1 );
$Private::control_path_dir =
tempdir($ENV{'HOME'}."/.parallel/tmp/control_path_dir-XXXX",
CLEANUP => 1);
}
return $Private::control_path_dir;
}
@ -4450,7 +4525,29 @@ sub sshcleanup {
# ssh command needed to remove file from sshlogin
my ($sshlogin,$file) = (@_);
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
return "$sshcmd $serverlogin rm -f ".shell_quote($file);
my $workdir = workdir();
my $removeworkdir = "";
my @subworkdirs = parentdirs_of($file);
if(@subworkdirs) {
$removeworkdir = "; rmdir 2>/dev/null ".join(" ",map { $workdir."/".$_ } @subworkdirs);
}
my $relpath = ($file !~ m:^/:); # Is the path relative?
my $cleandir = ($relpath ? $workdir : "");
return "$sshcmd $serverlogin rm -f ".shell_quote($file.$removeworkdir)." ";
}
sub parentdirs_of {
# Return:
# all parentdirs except . of this dir or file sorted descending by length
my $d = shift;
my @parents = ();
while($d =~ s:/[^/]+$::) {
if($d ne ".") {
push @parents, $d;
}
}
return @parents;
}
sub sshtransferreturn {
@ -4463,32 +4560,39 @@ sub sshtransferreturn {
$file =~ s:^\./::g; # Remove ./ if any
my $relpath = ($file !~ m:^/:); # Is the path relative?
# Use different subdirs depending on abs or rel path
my $rsync_destdir = ($relpath ? "./" : "/");
if($transfer) {
# Abs path: rsync -rlDzRE /home/tange/dir/subdir/file.gz server:/
# Rel path: rsync -rlDzRE ./subdir/file.gz server:./
# Rel path: rsync -rlDzRE ./subdir/file.gz server:.parallel/tmp/tempid/
# Rel path: rsync -rlDzRE ./subdir/file.gz server:$workdir/
my $remote_workdir = workdir($file);
my $rsync_destdir = ($relpath ? $remote_workdir : "/");
if($relpath) {
$file = "./".$file;
}
if(-r shell_unquote($file)) {
return "rsync $rsync_opt $file $serverlogin:$rsync_destdir";
my $mkremote_workdir =
$remote_workdir eq "." ? "true" : "ssh $serverlogin mkdir -p $rsync_destdir";
return "$mkremote_workdir; rsync $rsync_opt $file $serverlogin:$rsync_destdir";
} else {
print STDERR "Warning: $file is not readable and will not be transferred\n";
return "true"; # dummy command to run
}
} else {
# Return or cleanup
my $noext = no_extension($file); # Remove .ext before prepending ./
my @cmd = ();
my $rsync_destdir = ($relpath ? "./" : "/");
for my $ret_file (@Global::ret_files) {
my $remove = $removesource ? "--remove-source-files" : "";
# If relative path: prepend ./ (to avoid problems with ':')
my $replaced = ($relpath ? "./" : "") .
# If relative path: prepend workdir/./ to avoid problems if the dir contains ':'
# and to get the right relative return path
my $replaced = ($relpath ? workdir()."/./" : "") .
context_replace($ret_file,[$file],[$noext]);
# --return
# Abs path: rsync -rlDzRE server:/home/tange/dir/subdir/file.gz /
# Rel path: rsync -rlDzRE server:./subsir/file.gz ./
push(@cmd, "rsync $rsync_opt $remove $serverlogin:"
.shell_quote($replaced)." ".$rsync_destdir);
push(@cmd, "rsync $rsync_opt $remove $serverlogin:".
shell_quote($replaced) . " ".$rsync_destdir);
}
return join(";",@cmd);
}
@ -4747,7 +4851,6 @@ sub my_memory_usage {
use strict;
use FileHandle;
my $pid = $$;
if(-e "/proc/$pid/stat") {
my $fh = FileHandle->new("</proc/$pid/stat");

View file

@ -122,7 +122,7 @@ retry the command. Default is I<--retries 1>.
=item B<-s> I<string>
Field separator. Use I<string> as seperator between columns.
Field separator. Use I<string> as separator between columns.
=item B<--skip-first-line>

View file

@ -0,0 +1 @@
efg

View file

@ -0,0 +1 @@
efg

View file

@ -0,0 +1 @@
efg

View file

@ -0,0 +1 @@
efg

View file

@ -1,28 +1,26 @@
#!/bin/bash
PAR=parallel
rsync -Ha --delete input-files/testdir/ tmp/
cd tmp
echo echo test of cat pipe sh | $PAR -j 50 2>&1
find . -name '*.jpg' | $PAR -j +0 convert -geometry 120 {} {}_thumb.jpg
echo echo test of cat pipe sh | parallel -j 50 2>&1
find . -name '*.jpg' | parallel -j +0 convert -geometry 120 {} {}_thumb.jpg
find . -name '*_thumb.jpg' | ren 's:/([^/]+)_thumb.jpg$:/thumb_$1:'
ls | $PAR ls | sort
ls | $PAR echo ls | sort
ls | $PAR -j 1 echo ls | sort
find -type f | $PAR diff {} a/foo ">"{}.diff | sort
ls | $PAR -vg "ls {}|wc;echo {}" | sort
ls | parallel ls | sort
ls | parallel echo ls | sort
ls | parallel -j 1 echo ls | sort
find -type f | parallel diff {} a/foo ">"{}.diff | sort
ls | parallel -vg "ls {}|wc;echo {}" | sort
echo '### Check that we can have more input than max procs (-j 0)'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | $PAR -vj 0 touch | sort | tail
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | $PAR -j 0 rm | sort
ls | $PAR -j500 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | $PAR -gj500 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | $PAR -g "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
ls | $PAR -vg "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
ls | $PAR -qg perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort
ls | $PAR -qvg perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch | sort | tail
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
ls | parallel -gj500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort
find . -type f | parallel -g "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
find . -type f | parallel -vg "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort
find . -type f | parallel -qg perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort
find . -type f | parallel -qvg perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort
cd ..
rm -rf tmp

View file

@ -3,7 +3,7 @@
echo '### Test -k'
ulimit -n 50
(echo "sleep 3; echo begin"; seq 1 30 | parallel -kq echo "sleep 1; echo {}"; echo "echo end") \
| parallel -k -j0
| stdout parallel -k -j0
echo '### Test --keep-order'
(seq 0 2) | parallel --keep-order -j100% -S 1/:,2/parallel@server2 -q perl -e 'sleep 1;print "job{}\n";exit({})'
@ -12,4 +12,4 @@ echo '### Test --keeporder'
(seq 0 2) | parallel --keeporder -j100% -S 1/:,2/parallel@server2 -q perl -e 'sleep 1;print "job{}\n";exit({})'
echo '### Test SIGTERM'
(sleep 5; killall parallel -TERM) & seq 1 100 | parallel -k sleep 3';' echo
(sleep 5; killall parallel -TERM) & seq 1 100 | stdout parallel -k sleep 3';' echo | sort

View file

@ -19,8 +19,8 @@ cat /tmp/test17 | parallel -k /bin/echo /tmp/parallel.file{}.file >/tmp/test17ab
cat /tmp/test17 | parallel -k /bin/echo tmp/parallel.file{}.file >/tmp/test17rel
echo '### --transfer - abspath'
stdout ssh $SERVER1 'rm -rf tmp/parallel.file*'
stdout ssh parallel@$SERVER2 'rm -rf tmp/parallel.file*'
stdout ssh $SERVER1 'rm -rf /tmp/parallel.file*'
stdout ssh parallel@$SERVER2 'rm -rf /tmp/parallel.file*'
cat /tmp/test17abs | parallel -k --transfer --sshlogin $SERVER1,parallel@$SERVER2 cat {}";"rm {}
# One of these should give the empty dir /tmp/parallel.file
echo good if no file
@ -62,7 +62,7 @@ ls /tmp/parallel.file*out /tmp/parallel.file/*out
echo '### --return - relpath'
rm -rf /tmp/parallel.file*out
cat /tmp/test17rel | parallel -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out
cat /tmp/test17rel | parallel -k --return {.}.out --sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp/parallel.file ';'echo {} ">"{.}.out
ls tmp/parallel.file*out tmp/parallel.file/*out
echo '### --return - multiple files'
@ -74,7 +74,7 @@ ls tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/paral
echo '### --return --cleanup - abspath'
rm -rf /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
cat /tmp/test17abs | parallel -k --return {.}.out --return {}.done --cleanup \
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp/parallel.file ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
ls /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
echo good if no file
stdout ssh $SERVER1 ls '/tmp/parallel.file*' || echo OK
@ -84,7 +84,7 @@ stdout ssh parallel@$SERVER2 ls '/tmp/parallel.file*' || echo OK
echo '### --return --cleanup - relpath'
rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
cat /tmp/test17rel | parallel -k --return {.}.out --return {}.done --cleanup \
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp/parallel.file ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
ls tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
@ -94,7 +94,7 @@ stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --return --cleanup - multiple returns'
rm -rf tmp/parallel.file*out tmp/parallel.file/*out tmp/parallel.file*done tmp/parallel.file/*done
cat /tmp/test17rel | parallel -k --return {.}.out --return {}.done --cleanup \
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp/parallel.file ';'echo {} ">"{.}.out';'echo {} ">"{}.done';'
ls /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
@ -104,7 +104,7 @@ stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo '### --transfer --return --cleanup - abspath'
rm -rf /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
cat /tmp/test17abs | parallel -k --transfer --return {.}.out --return {}.done --cleanup \
--sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp ';'cat {} ">"{.}.out';'cat {} ">"{}.done';'
--sshlogin $SERVER1,parallel@$SERVER2 cat {} ">"{.}.out';'cat {} ">"{}.done';'
ls /tmp/parallel.file*out /tmp/parallel.file/*out /tmp/parallel.file*done /tmp/parallel.file/*done
echo good if no file
stdout ssh $SERVER1 ls '/tmp/parallel.file*' || echo OK

View file

@ -2,8 +2,6 @@
# TODO return multiple
PAR=parallel
SERVER1=parallel-server3
SERVER2=parallel-server2
@ -19,7 +17,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --sshlogin $SERVER1,parallel@$SERVER2 cat {}";"rm {}
find tmp/parallel*newline* -print0 | parallel -0 -k --transfer --sshlogin $SERVER1,parallel@$SERVER2 cat {}";"rm {}
# Should give: No such file or directory
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*'
@ -31,7 +29,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {}
find tmp/parallel*newline* -print0 | parallel -0 -k --transfer --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {}
# Should give: No such file or directory
echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*'
@ -39,11 +37,12 @@ stdout ssh $SERVER1 ls 'tmp/parallel.file*'
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*'
echo '### --return - file with newline'
rm -rf /tmp/parallel.file.*newline*
echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --return {}.out --sshlogin $SERVER1,parallel@$SERVER2 echo remote '>' {}.out
find tmp/parallel*newline* -print0 | parallel -0 -k --return {}.out --sshlogin $SERVER1,parallel@$SERVER2 mkdir -p tmp\;echo remote '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
# Cleanup remote
@ -55,7 +54,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 echo remote '>' {}.out
find tmp/parallel*newline* -print0 | parallel -0 -k --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 echo remote '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
@ -68,7 +67,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --transfer --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
find tmp/parallel*newline* -print0 | parallel -0 -k --transfer --return {}.out --cleanup --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
@ -81,7 +80,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --trc {}.out --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
find tmp/parallel*newline* -print0 | parallel -0 -k --trc {}.out --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out
ls tmp/parallel*newline*out
rm tmp/parallel*newline*out
echo good if no file
@ -94,7 +93,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k --trc {}.out --trc {}.out2 --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out';'cat {} '>' {}.out2
find tmp/parallel*newline* -print0 | parallel -0 -k --trc {}.out --trc {}.out2 --sshlogin $SERVER1,parallel@$SERVER2 cat {} '>' {}.out';'cat {} '>' {}.out2
ls tmp/parallel*newline*out*
rm tmp/parallel*newline*out*
echo good if no file
@ -111,7 +110,7 @@ echo newline > '/tmp/parallel.file.
newline1'
echo newline > '/tmp/parallel.file.
newline2'
find tmp/parallel*newline* -print0 | $PAR -0 -k -j1 --trc {}.out --trc {}.out2 \
find tmp/parallel*newline* -print0 | parallel -0 -k -j1 --trc {}.out --trc {}.out2 \
--sshlogin "/tmp/myssh1 $SERVER1, /tmp/myssh2 parallel@$SERVER2" \
cat {} '>' {}.out';'cat {} '>' {}.out2
ls tmp/parallel*newline*out*
@ -120,13 +119,13 @@ echo good if no file
stdout ssh $SERVER1 ls 'tmp/parallel.file*' || echo OK
# Should give: No such file or directory
stdout ssh parallel@$SERVER2 ls 'tmp/parallel.file*' || echo OK
echo Input for ssh
cat /tmp/myssh1-run /tmp/myssh2-run
echo 'Input for ssh'
cat /tmp/myssh1-run /tmp/myssh2-run | perl -pe 's/PID=\d+/PID=00000/g'
rm /tmp/myssh1-run /tmp/myssh2-run
echo '### Test use special ssh with > 9 simultaneous'
echo 'ssh "$@"; echo "$@" >>/tmp/myssh1-run' >/tmp/myssh1
echo 'ssh "$@"; echo "$@" >>/tmp/myssh2-run' >/tmp/myssh2
chmod 755 /tmp/myssh1 /tmp/myssh2
seq 1 100 | $PAR --sshlogin "/tmp/myssh1 $SERVER1, /tmp/myssh2 parallel@$SERVER2" \
seq 1 100 | parallel --sshlogin "/tmp/myssh1 $SERVER1, /tmp/myssh2 parallel@$SERVER2" \
-j10000% -k echo

View file

@ -7,11 +7,11 @@ echo '### Test $PARALLEL'
echo | PARALLEL=--number-of-cpus parallel
seq 1 2 | PARALLEL="-S$SERVER1
-Sssh -l parallel $SERVER2
-j1" parallel -kv echo
-j1" parallel -kvv echo
echo '### Test ~/.parallel/config'
echo "-S$SERVER1
-Sssh -l parallel $SERVER2
-j1" > ~/.parallel/config
seq 1 2 | parallel -kv echo
seq 1 2 | parallel -kvv echo
rm ~/.parallel/config

View file

@ -0,0 +1,45 @@
#!/bin/bash
rsync -Ha --delete input-files/testdir/ tmp/
cd tmp
SERVER2=parallel@parallel-server2
echo $SERVER2 >~/.parallel/sshloginfile
echo '### Test -W newtempdir/newdir/tmp/ with space dirs'
ssh $SERVER2 rm -rf newtempdir
stdout parallel -k -W newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.6 -S .. -v echo ">"{}.6 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.6'
echo '### Test -W /tmp/newtempdir/newdir/tmp/ with space dirs'
ssh $SERVER2 rm -rf /tmp/newtempdir
stdout parallel -k -W /tmp/newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.7 -S .. -v echo ">"{}.7 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.7'
echo '### Test --workdir ...'
parallel -k --workdir ... --basefile 1-col.txt --trc {}.1 -S .. echo ">"{}.1 ::: 2-col.txt
find . -name '*.1'
echo '### Test -W ...'
parallel -k -W ... --basefile 1-col.txt --trc {}.2 -S .. -v echo ">"{}.2 ::: 2-col.txt
find . -name '*.2'
echo '### Test -W ... with space dirs'
stdout parallel -k -W ... --basefile 1-col.txt --trc {}.3 -S .. -v echo ">"{}.3 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.3'
echo '### Test -W tmpdir'
parallel -k -W tmpdir --basefile 1-col.txt --trc {}.4 -S .. -v echo ">"{}.4 ::: 2-col.txt
find . -name '*.4'
echo '### Test -W /tmp/ with space dirs'
stdout parallel -k -W /tmp/ --basefile 1-col.txt --trc {}.5 -S .. -v echo ">"{}.5 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.5'
cd ..
rm -rf tmp

View file

@ -0,0 +1,16 @@
#!/bin/bash
SERVER1=parallel-server3
SERVER2=parallel-server2
echo '### Test $PARALLEL_SEQ - local'
seq 1 20 | parallel -kN2 echo arg1:{1} seq:'$'PARALLEL_SEQ arg2:{2}
echo '### Test $PARALLEL_SEQ - remote'
seq 1 20 | parallel -kN2 -S $SERVER1,parallel@$SERVER2 echo arg1:{1} seq:'$'PARALLEL_SEQ arg2:{2}
echo '### Test $PARALLEL_PID - local'
seq 1 20 | parallel -kN2 echo arg1:{1} seq:'$'PARALLEL_PID arg2:{2} | perl -pe 's/\d/0/g'
echo '### Test $PARALLEL_PID - remote'
seq 1 20 | parallel -kN2 -S $SERVER1,parallel@$SERVER2 echo arg1:{1} seq:'$'PARALLEL_PID arg2:{2} | perl -pe 's/\d/0/g'

View file

@ -3,33 +3,51 @@ test of cat pipe sh
2-col.txt
bar
bar
c"d
c' d
cd
foo
foo
foo2
ls ab
ls ab
ls 1-col.txt
ls 2-col.txt
ls a
ls a b
ls b
ls ab
ls ab
ls 1-col.txt
ls 2-col.txt
ls a
ls a b
ls b
1 1 4
1 1 4
1 1 10
1 1 10
1 1 15
1 1 15
1 2 5
4 4 26
6 6 41
ab
ab
1-col.txt
1-col.txt.diff
2-col.txt
2-col.txt.diff
a
a b
b
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
ls 1-col.txt|wc;echo 1-col.txt
ls 2-col.txt.diff|wc;echo 2-col.txt.diff
ls 2-col.txt|wc;echo 2-col.txt
ls \ ab\ |wc;echo \ ab\
ls \ ab|wc;echo \ ab
ls a\ b|wc;echo a\ b
ls a|wc;echo a
ls b|wc;echo b
### Check that we can have more input than max procs (-j 0)
@ -146,6 +164,9 @@ touch more_than_5000-9999
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
2 ab
2 a b
4 ab
4 b
6 a
1 1-col.txt
@ -251,239 +272,322 @@ touch more_than_5000-9999
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
2 ab
2 a b
4 ab
4 b
6 a
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 1-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 1-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 2-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' a
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' b
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9901
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9902
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9903
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9904
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9905
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9906
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9907
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9908
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9909
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9910
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9911
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9912
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9913
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9914
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9915
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9916
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9917
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9918
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9919
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9920
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9921
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9922
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9923
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9924
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9925
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9926
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9927
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9928
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9929
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9930
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9931
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9932
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9933
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9934
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9935
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9936
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9937
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9938
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9939
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9940
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9941
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9942
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9943
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9944
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9945
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9946
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9947
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9948
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9949
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9950
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9951
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9952
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9953
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9954
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9955
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9956
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9957
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9958
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9959
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9960
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9961
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9962
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9963
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9964
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9965
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9966
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9967
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9968
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9969
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9970
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9971
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9972
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9973
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9974
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9975
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9976
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9977
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9978
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9979
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9980
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9981
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9982
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9983
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9984
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9985
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9986
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9987
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9988
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9989
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9990
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9991
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9992
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9993
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9994
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9995
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9996
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9997
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9998
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9999
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 1-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 1-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 2-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 2-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" a
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" b
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9901
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9902
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9903
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9904
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9905
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9906
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9907
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9908
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9909
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9910
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9911
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9912
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9913
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9914
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9915
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9916
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9917
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9918
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9919
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9920
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9921
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9922
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9923
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9924
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9925
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9926
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9927
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9928
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9929
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9930
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9931
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9932
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9933
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9934
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9935
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9936
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9937
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9938
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9939
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9940
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9941
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9942
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9943
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9944
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9945
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9946
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9947
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9948
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9949
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9950
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9951
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9952
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9953
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9954
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9955
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9956
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9957
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9958
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9959
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9960
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9961
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9962
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9963
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9964
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9965
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9966
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9967
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9968
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9969
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9970
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9971
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9972
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9973
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9974
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9975
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9976
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9977
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9978
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9979
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9980
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9981
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9982
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9983
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9984
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9985
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9986
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9987
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9988
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9989
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9990
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9991
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9992
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9993
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9994
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9995
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9996
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9997
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9998
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9999
./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/efg.diff
./ ab/c"d/efg.diff
./1-col.txt.diff
./1-col.txt.diff
./2-col.txt
./2-col.txt
./2-col.txt.diff
./2-col.txt.diff
./a b/cd / ef/efg.diff
./a b/cd / ef/efg.diff
./a/bar.diff
./a/bar.diff
./b/bar.diff
./b/bar.diff
./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/efg.diff
./ ab/c"d/efg.diff
./1-col.txt.diff
./1-col.txt.diff
./2-col.txt
./2-col.txt
./2-col.txt.diff
./2-col.txt.diff
./a b/cd / ef/efg.diff
./a b/cd / ef/efg.diff
./a/bar.diff
./a/bar.diff
./b/bar.diff
./b/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9901
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9902
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9903
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9904
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9905
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9906
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9907
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9908
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9909
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9910
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9911
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9912
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9913
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9914
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9915
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9916
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9917
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9918
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9919
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9920
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9921
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9922
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9923
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9924
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9925
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9926
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9927
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9928
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9929
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9930
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9931
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9932
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9933
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9934
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9935
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9936
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9937
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9938
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9939
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9940
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9941
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9942
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9943
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9944
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9945
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9946
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9947
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9948
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9949
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9950
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9951
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9952
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9953
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9954
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9955
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9956
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9957
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9958
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9959
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9960
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9961
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9962
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9963
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9964
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9965
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9966
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9967
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9968
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9969
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9970
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9971
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9972
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9973
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9974
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9975
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9976
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9977
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9978
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9979
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9980
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9981
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9982
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9983
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9984
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9985
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9986
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9987
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9988
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9989
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9990
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9991
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9992
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9993
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9994
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9995
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9996
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9997
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9998
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9999
./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/efg.diff
./ ab/c"d/efg.diff
./1-col.txt.diff
./1-col.txt.diff
./2-col.txt
./2-col.txt
./2-col.txt.diff
./2-col.txt.diff
./a b/cd / ef/efg.diff
./a b/cd / ef/efg.diff
./a/bar.diff
./a/bar.diff
./b/bar.diff
./b/bar.diff
./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/ef g.diff
./ ab/c"d/efg.diff
./ ab/c"d/efg.diff
./1-col.txt.diff
./1-col.txt.diff
./2-col.txt
./2-col.txt
./2-col.txt.diff
./2-col.txt.diff
./a b/cd / ef/efg.diff
./a b/cd / ef/efg.diff
./a/bar.diff
./a/bar.diff
./b/bar.diff
./b/bar.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9901
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9902
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9903
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9904
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9905
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9906
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9907
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9908
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9909
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9910
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9911
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9912
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9913
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9914
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9915
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9916
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9917
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9918
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9919
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9920
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9921
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9922
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9923
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9924
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9925
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9926
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9927
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9928
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9929
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9930
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9931
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9932
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9933
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9934
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9935
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9936
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9937
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9938
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9939
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9940
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9941
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9942
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9943
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9944
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9945
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9946
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9947
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9948
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9949
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9950
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9951
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9952
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9953
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9954
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9955
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9956
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9957
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9958
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9959
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9960
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9961
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9962
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9963
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9964
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9965
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9966
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9967
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9968
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9969
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9970
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9971
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9972
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9973
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9974
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9975
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9976
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9977
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9978
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9979
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9980
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9981
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9982
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9983
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9984
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9985
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9986
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9987
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9988
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9989
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9990
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9991
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9992
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9993
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9994
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9995
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9996
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9997
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9998
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9999

View file

@ -1,4 +1,5 @@
### Test -k
Warning: Only enough filehandles to run 20 jobs in parallel. Raising ulimit -n may help
begin
1
2
@ -41,14 +42,6 @@ job1
job2
### Test SIGTERM
1
2
3
4
5
6
7
8
9
10
11
12
@ -58,3 +51,22 @@ job2
16
17
18
2
3
4
5
6
7
8
9
parallel: SIGTERM received. No new jobs will be started.
parallel: Waiting for these 9 jobs to finish. Send SIGTERM again to stop now.
parallel: sleep 3; echo 10
parallel: sleep 3; echo 11
parallel: sleep 3; echo 12
parallel: sleep 3; echo 13
parallel: sleep 3; echo 14
parallel: sleep 3; echo 15
parallel: sleep 3; echo 16
parallel: sleep 3; echo 17
parallel: sleep 3; echo 18

View file

@ -93,6 +93,8 @@ file20
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --return - abspath
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.out
@ -262,8 +264,6 @@ tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --return --cleanup - multiple returns
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
@ -306,8 +306,6 @@ OK
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
@ -572,63 +570,63 @@ good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
OK
### --transfer --cleanup - multiple argument files
rsync -rlDzRE -essh ./tmp/parallel.file1.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file\>fire.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file\\\>fire.file\ tmp/parallel.file1.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file1.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file\\\>fire.file; exit $_EXIT_status;
cat /tmp/parallel.file\>fire.file tmp/parallel.file1.file
file>fire
file1
rsync -rlDzRE -essh ./tmp/parallel.file2.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file9.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file9.file\ tmp/parallel.file2.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file2.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file9.file; exit $_EXIT_status;
cat /tmp/parallel.file9.file tmp/parallel.file2.file
file9
file2
rsync -rlDzRE -essh ./tmp/parallel.file3.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file8.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file8.file\ tmp/parallel.file3.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file3.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file8.file; exit $_EXIT_status;
cat /tmp/parallel.file8.file tmp/parallel.file3.file
file8
file3
rsync -rlDzRE -essh ./tmp/parallel.file\>fire.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file7.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file7.file\ tmp/parallel.file\\\>fire.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file\\\>fire.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file7.file; exit $_EXIT_status;
cat /tmp/parallel.file7.file tmp/parallel.file\>fire.file
file7
file>fire
rsync -rlDzRE -essh ./tmp/parallel.file5.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file6.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file6.file\ tmp/parallel.file5.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file5.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file6.file; exit $_EXIT_status;
cat /tmp/parallel.file6.file tmp/parallel.file5.file
file6
file5
rsync -rlDzRE -essh ./tmp/parallel.file6.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file5.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file5.file\ tmp/parallel.file6.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file6.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file5.file; exit $_EXIT_status;
cat /tmp/parallel.file5.file tmp/parallel.file6.file
file5
file6
rsync -rlDzRE -essh ./tmp/parallel.file7.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file3.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file3.file\ tmp/parallel.file7.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file7.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file3.file; exit $_EXIT_status;
cat /tmp/parallel.file3.file tmp/parallel.file7.file
file3
file7
rsync -rlDzRE -essh ./tmp/parallel.file8.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file20.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file20.file\ tmp/parallel.file8.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file8.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file20.file; exit $_EXIT_status;
cat /tmp/parallel.file20.file tmp/parallel.file8.file
file20
file8
rsync -rlDzRE -essh ./tmp/parallel.file9.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file2.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file2.file\ tmp/parallel.file9.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file9.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file2.file; exit $_EXIT_status;
cat /tmp/parallel.file2.file tmp/parallel.file9.file
file2
file9
rsync -rlDzRE -essh ./tmp/parallel.file10.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file19.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file19.file\ tmp/parallel.file10.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file10.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file19.file; exit $_EXIT_status;
cat /tmp/parallel.file19.file tmp/parallel.file10.file
file19
file10
rsync -rlDzRE -essh ./tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file18.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file18.file\ tmp/parallel.file\\\ :\\\ \\\&\\\ \\\)\\\ \\\\n\\\*.jpg.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file\\\ :\\\ \\\&\\\ \\\)\\\ \\\\n\\\*.jpg.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file18.file; exit $_EXIT_status;
cat /tmp/parallel.file18.file tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file
file18
file : & ) \n*.jpg
rsync -rlDzRE -essh ./tmp/parallel.file/sub\ dir.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file17.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file17.file\ tmp/parallel.file/./sub\\\ dir.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file/./sub\\\ dir.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file17.file; exit $_EXIT_status;
cat /tmp/parallel.file17.file tmp/parallel.file/./sub\ dir.file
file17
file/./sub dir
rsync -rlDzRE -essh ./tmp/parallel.file13.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file16.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file16.file\ tmp/parallel.file13.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file13.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file16.file; exit $_EXIT_status;
cat /tmp/parallel.file16.file tmp/parallel.file13.file
file16
file13
rsync -rlDzRE -essh ./tmp/parallel.file14.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file15.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file15.file\ tmp/parallel.file14.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file14.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file15.file; exit $_EXIT_status;
cat /tmp/parallel.file15.file tmp/parallel.file14.file
file15
file14
rsync -rlDzRE -essh ./tmp/parallel.file15.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file14.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file14.file\ tmp/parallel.file15.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file15.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file14.file; exit $_EXIT_status;
cat /tmp/parallel.file14.file tmp/parallel.file15.file
file14
file15
rsync -rlDzRE -essh ./tmp/parallel.file16.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file13.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file13.file\ tmp/parallel.file16.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file16.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file13.file; exit $_EXIT_status;
cat /tmp/parallel.file13.file tmp/parallel.file16.file
file13
file16
rsync -rlDzRE -essh ./tmp/parallel.file17.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file10.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file10.file\ tmp/parallel.file17.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file17.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file10.file; exit $_EXIT_status;
cat /tmp/parallel.file10.file tmp/parallel.file17.file
file10
file17
rsync -rlDzRE -essh ./tmp/parallel.file18.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file1.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file1.file\ tmp/parallel.file18.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file18.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file1.file; exit $_EXIT_status;
cat /tmp/parallel.file1.file tmp/parallel.file18.file
file1
file18
rsync -rlDzRE -essh ./tmp/parallel.file19.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file/sub\ dir.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file/./sub\\\ dir.file\ tmp/parallel.file19.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file19.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file/./sub\\\ dir.file; exit $_EXIT_status;
cat /tmp/parallel.file/./sub\ dir.file tmp/parallel.file19.file
file/./sub dir
file19
rsync -rlDzRE -essh ./tmp/parallel.file20.file parallel@parallel-server2:./;rsync -rlDzRE -essh /tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file parallel@parallel-server2:/;ssh parallel@parallel-server2 cat\ /tmp/parallel.file\\\ :\\\ \\\&\\\ \\\)\\\ \\\\n\\\*.jpg.file\ tmp/parallel.file20.file;_EXIT_status=$?; ssh parallel@parallel-server2 rm -f tmp/parallel.file20.file;ssh parallel@parallel-server2 rm -f /tmp/parallel.file\\\ :\\\ \\\&\\\ \\\)\\\ \\\\n\\\*.jpg.file; exit $_EXIT_status;
cat /tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file tmp/parallel.file20.file
file : & ) \n*.jpg
file20

View file

@ -75,30 +75,30 @@ OK
ls: cannot access tmp/parallel.file*: No such file or directory
OK
Input for ssh
parallel-server3 rsync --server -lDErRze.iLsf . ./
parallel-server3 cat tmp/parallel.file.'
parallel-server3 rsync --server -lDErRze.iLsf . .
parallel-server3 PARALLEL_SEQ=2;export PARALLEL_SEQ;PARALLEL_PID=00000;export PARALLEL_PID; cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out;cat tmp/parallel.file.'
'newline2 > tmp/parallel.file.'
'newline2.out2
parallel-server3 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./tmp/parallel.file.'
parallel-server3 rsync --server --sender -lDrRze.iLsf --remove-source-files . ././tmp/parallel.file.'
'newline2.out
parallel-server3 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./tmp/parallel.file.'
parallel-server3 rsync --server --sender -lDrRze.iLsf --remove-source-files . ././tmp/parallel.file.'
'newline2.out2
parallel-server3 rm -f tmp/parallel.file.'
'newline2
-l parallel parallel-server2 rsync --server -lDErRze.iLsf . ./
parallel@parallel-server2 cat tmp/parallel.file.'
'newline2; rmdir 2>/dev/null ./tmp
-l parallel parallel-server2 rsync --server -lDErRze.iLsf . .
parallel@parallel-server2 PARALLEL_SEQ=1;export PARALLEL_SEQ;PARALLEL_PID=00000;export PARALLEL_PID; cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out;cat tmp/parallel.file.'
'newline1 > tmp/parallel.file.'
'newline1.out2
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./tmp/parallel.file.'
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . ././tmp/parallel.file.'
'newline1.out
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./tmp/parallel.file.'
-l parallel parallel-server2 rsync --server --sender -lDrRze.iLsf --remove-source-files . ././tmp/parallel.file.'
'newline1.out2
parallel@parallel-server2 rm -f tmp/parallel.file.'
'newline1
'newline1; rmdir 2>/dev/null ./tmp
### Test use special ssh with > 9 simultaneous
1
2

View file

@ -1,11 +1,11 @@
### Test $PARALLEL
1
ssh -l parallel parallel-server2 echo\ 1;
ssh -l parallel parallel-server2 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; echo\ 1;
1
ssh parallel-server3 echo\ 2;
ssh parallel-server3 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; echo\ 2;
2
### Test ~/.parallel/config
ssh -l parallel parallel-server2 echo\ 1;
ssh -l parallel parallel-server2 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; echo\ 1;
1
ssh parallel-server3 echo\ 2;
ssh parallel-server3 PARALLEL_SEQ=$PARALLEL_SEQ\;export PARALLEL_SEQ\;PARALLEL_PID=$PARALLEL_PID\;export PARALLEL_PID\; echo\ 2;
2

View file

@ -0,0 +1,68 @@
### Test -W newtempdir/newdir/tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.6
echo >\ ab/c\"d/efg.6
echo >./b/bar.6
echo >./b/foo.6
echo >./\ ab\ /c\'\ d/\ ef\"g.6
echo >./2-col.txt.6
echo >./a\ b/cd\ /\ ef/efg.6
./ ab/c"d/ef g.6
./ ab/c"d/efg.6
./b/foo.6
./b/bar.6
./ ab /c' d/ ef"g.6
./a b/cd / ef/efg.6
./2-col.txt.6
### Test -W /tmp/newtempdir/newdir/tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.7
echo >\ ab/c\"d/efg.7
echo >./b/bar.7
echo >./b/foo.7
echo >./\ ab\ /c\'\ d/\ ef\"g.7
echo >./2-col.txt.7
echo >./a\ b/cd\ /\ ef/efg.7
./ ab/c"d/efg.7
./ ab/c"d/ef g.7
./2-col.txt.7
./b/bar.7
./b/foo.7
./ ab /c' d/ ef"g.7
./a b/cd / ef/efg.7
### Test --workdir ...
./2-col.txt.1
### Test -W ...
echo >2-col.txt.2
./2-col.txt.2
### Test -W ... with space dirs
echo >./\ ab/c\"d/ef\ g.3
echo >\ ab/c\"d/efg.3
echo >./b/bar.3
echo >./b/foo.3
echo >./\ ab\ /c\'\ d/\ ef\"g.3
echo >./2-col.txt.3
echo >./a\ b/cd\ /\ ef/efg.3
./ ab/c"d/ef g.3
./ ab/c"d/efg.3
./b/bar.3
./b/foo.3
./ ab /c' d/ ef"g.3
./2-col.txt.3
./a b/cd / ef/efg.3
### Test -W tmpdir
echo >2-col.txt.4
./2-col.txt.4
### Test -W /tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.5
echo >\ ab/c\"d/efg.5
echo >./b/bar.5
echo >./b/foo.5
echo >./\ ab\ /c\'\ d/\ ef\"g.5
echo >./2-col.txt.5
echo >./a\ b/cd\ /\ ef/efg.5
./2-col.txt.5
./ ab/c"d/ef g.5
./ ab/c"d/efg.5
./b/foo.5
./b/bar.5
./ ab /c' d/ ef"g.5
./a b/cd / ef/efg.5

View file

@ -0,0 +1,44 @@
### Test $PARALLEL_SEQ - local
arg1:1 seq:1 arg2:2
arg1:3 seq:2 arg2:4
arg1:5 seq:3 arg2:6
arg1:7 seq:4 arg2:8
arg1:9 seq:5 arg2:10
arg1:11 seq:6 arg2:12
arg1:13 seq:7 arg2:14
arg1:15 seq:8 arg2:16
arg1:17 seq:9 arg2:18
arg1:19 seq:10 arg2:20
### Test $PARALLEL_SEQ - remote
arg1:1 seq:1 arg2:2
arg1:3 seq:2 arg2:4
arg1:5 seq:3 arg2:6
arg1:7 seq:4 arg2:8
arg1:9 seq:5 arg2:10
arg1:11 seq:6 arg2:12
arg1:13 seq:7 arg2:14
arg1:15 seq:8 arg2:16
arg1:17 seq:9 arg2:18
arg1:19 seq:10 arg2:20
### Test $PARALLEL_PID - local
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
### Test $PARALLEL_PID - remote
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:0
arg0:0 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00
arg0:00 seq:00000 arg0:00