From f085a37a40f1c303f4984db2b9578b7735929483 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Wed, 27 Oct 2010 01:50:58 +0200 Subject: [PATCH] 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. --- doc/FUTURE_IDEAS | 26 +- doc/release_new_version | 41 +- src/parallel | 171 ++++-- src/sql | 2 +- .../input-files/testdir/ ab /c' d/ ef\"g" | 1 + "testsuite/input-files/testdir/ ab/c\"d/ef g" | 1 + "testsuite/input-files/testdir/ ab/c\"d/efg" | 1 + testsuite/input-files/testdir/a b/cd / ef/efg | 1 + testsuite/tests-to-run/test01.sh | 32 +- testsuite/tests-to-run/test13.sh | 4 +- testsuite/tests-to-run/test17.sh | 18 +- testsuite/tests-to-run/test19.sh | 25 +- testsuite/tests-to-run/test21.sh | 4 +- testsuite/tests-to-run/test35.sh | 45 ++ testsuite/tests-to-run/test36.sh | 16 + testsuite/wanted-results/test01 | 572 +++++++++++------- testsuite/wanted-results/test13 | 28 +- testsuite/wanted-results/test17 | 46 +- testsuite/wanted-results/test19 | 20 +- testsuite/wanted-results/test21 | 8 +- testsuite/wanted-results/test35 | 68 +++ testsuite/wanted-results/test36 | 44 ++ 22 files changed, 811 insertions(+), 363 deletions(-) create mode 100644 "testsuite/input-files/testdir/ ab /c' d/ ef\"g" create mode 100644 "testsuite/input-files/testdir/ ab/c\"d/ef g" create mode 100644 "testsuite/input-files/testdir/ ab/c\"d/efg" create mode 100644 testsuite/input-files/testdir/a b/cd / ef/efg create mode 100755 testsuite/tests-to-run/test35.sh create mode 100644 testsuite/tests-to-run/test36.sh create mode 100644 testsuite/wanted-results/test35 create mode 100644 testsuite/wanted-results/test36 diff --git a/doc/FUTURE_IDEAS b/doc/FUTURE_IDEAS index 96befc1e..3d6b0f62 100644 --- a/doc/FUTURE_IDEAS +++ b/doc/FUTURE_IDEAS @@ -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 == diff --git a/doc/release_new_version b/doc/release_new_version index cfa002aa..b4bf64ee 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -117,7 +117,9 @@ cc:Peter Simons , Sandro Cazzaniga , Markus Ammer , Pavel Nuzhdin , Phil Sung , Michael Shigorin , Andrew McFague , Steven M. Christensen , - Chris Howey + Chris Howey , Fethican Coşkuner , + Rogério Brito , Jonathan Palardy , + Koen Vervloesem , 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 + +* Mac OS X Homebrew package. Thanks to Jonathan Palardy + * FreeBSD port. Thanks to Chris Howey -* First review on print: +* Pardus package. Thanks to Fethican Coşkuner + + +* 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 : + 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: diff --git a/src/parallel b/src/parallel index 74afabfc..f476b96e 100755 --- a/src/parallel +++ b/src/parallel @@ -18,7 +18,7 @@ B<#!/usr/bin/parallel> --shebang [options] [I [arguments]] =head1 DESCRIPTION -GNU B is a shell tool for executing jobs in parallel locally +GNU B 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 today you will find GNU B very easy to use as GNU B is written to have the same options as B. If you write loops in shell, you will find GNU B may be able to replace most of the loops and make them run faster by -running several jobs in parallel. If you use B or B you +running several jobs simultaneously. If you use B or B you will find GNU B will often make the command easier to read. GNU B 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 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 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 and exit. -=item B<--workdir> I (unimplemented) -=item B<-W> I (unimplemented) +=item B<--workdir> I (beta testing) + +=item B<-W> I (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 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 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 is to remove the spaces around the columns B -=head1 EXAMPLE: Working as cat | sh. Ressource inexpensive jobs and evaluation +=head1 EXAMPLE: Working as cat | sh. Resource inexpensive jobs and evaluation GNU B can work similar to B. -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 will wait for one of these to complete before starting another command. B 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 and is visible to the jobs started from GNU B. This makes it possible for the jobs to communicate directly to GNU B. +Remember to quote the $, so it gets evaluated by the correct +shell. B If each of the jobs tests a solution and one of jobs finds the solution the job can tell GNU B not to start more jobs by: B. 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 + +B + + =item $PARALLEL The environment variable $PARALLEL will be used as default options for @@ -1786,7 +1801,16 @@ B 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 cannot be done reliably with B 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 has no support for keeping the order of the output, therefore if running jobs in parallel using B 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(". =item B<-s> I -Field separator. Use I as seperator between columns. +Field separator. Use I as separator between columns. =item B<--skip-first-line> diff --git "a/testsuite/input-files/testdir/ ab /c' d/ ef\"g" "b/testsuite/input-files/testdir/ ab /c' d/ ef\"g" new file mode 100644 index 00000000..1505b408 --- /dev/null +++ "b/testsuite/input-files/testdir/ ab /c' d/ ef\"g" @@ -0,0 +1 @@ +efg diff --git "a/testsuite/input-files/testdir/ ab/c\"d/ef g" "b/testsuite/input-files/testdir/ ab/c\"d/ef g" new file mode 100644 index 00000000..1505b408 --- /dev/null +++ "b/testsuite/input-files/testdir/ ab/c\"d/ef g" @@ -0,0 +1 @@ +efg diff --git "a/testsuite/input-files/testdir/ ab/c\"d/efg" "b/testsuite/input-files/testdir/ ab/c\"d/efg" new file mode 100644 index 00000000..1505b408 --- /dev/null +++ "b/testsuite/input-files/testdir/ ab/c\"d/efg" @@ -0,0 +1 @@ +efg diff --git a/testsuite/input-files/testdir/a b/cd / ef/efg b/testsuite/input-files/testdir/a b/cd / ef/efg new file mode 100644 index 00000000..1505b408 --- /dev/null +++ b/testsuite/input-files/testdir/a b/cd / ef/efg @@ -0,0 +1 @@ +efg diff --git a/testsuite/tests-to-run/test01.sh b/testsuite/tests-to-run/test01.sh index 4ed0bb7c..def838e0 100755 --- a/testsuite/tests-to-run/test01.sh +++ b/testsuite/tests-to-run/test01.sh @@ -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 diff --git a/testsuite/tests-to-run/test13.sh b/testsuite/tests-to-run/test13.sh index 225a7235..8328f2e3 100755 --- a/testsuite/tests-to-run/test13.sh +++ b/testsuite/tests-to-run/test13.sh @@ -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 diff --git a/testsuite/tests-to-run/test17.sh b/testsuite/tests-to-run/test17.sh index bdccb14e..65aafee4 100755 --- a/testsuite/tests-to-run/test17.sh +++ b/testsuite/tests-to-run/test17.sh @@ -9,8 +9,8 @@ export LANG=C echo '### Test --transfer --return --cleanup' rm -rf /tmp/parallel.file* -stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*' -stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*' +stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*' +stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*' (seq 1 3;echo '>fire';seq 5 10; /bin/echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17 echo '# Create some weirdly files in /tmp' mkdir -p /tmp/parallel.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 diff --git a/testsuite/tests-to-run/test19.sh b/testsuite/tests-to-run/test19.sh index 8d15696f..5bf78243 100644 --- a/testsuite/tests-to-run/test19.sh +++ b/testsuite/tests-to-run/test19.sh @@ -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 diff --git a/testsuite/tests-to-run/test21.sh b/testsuite/tests-to-run/test21.sh index 8924e7f4..b73866c8 100644 --- a/testsuite/tests-to-run/test21.sh +++ b/testsuite/tests-to-run/test21.sh @@ -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 diff --git a/testsuite/tests-to-run/test35.sh b/testsuite/tests-to-run/test35.sh new file mode 100755 index 00000000..e0c05c92 --- /dev/null +++ b/testsuite/tests-to-run/test35.sh @@ -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 diff --git a/testsuite/tests-to-run/test36.sh b/testsuite/tests-to-run/test36.sh new file mode 100644 index 00000000..e4e36ef6 --- /dev/null +++ b/testsuite/tests-to-run/test36.sh @@ -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' diff --git a/testsuite/wanted-results/test01 b/testsuite/wanted-results/test01 index 0aac1af7..4db9db1f 100644 --- a/testsuite/wanted-results/test01 +++ b/testsuite/wanted-results/test01 @@ -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 diff --git a/testsuite/wanted-results/test13 b/testsuite/wanted-results/test13 index 92447abd..05cef882 100644 --- a/testsuite/wanted-results/test13 +++ b/testsuite/wanted-results/test13 @@ -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 diff --git a/testsuite/wanted-results/test17 b/testsuite/wanted-results/test17 index 34c19fff..d7afc6ca 100644 --- a/testsuite/wanted-results/test17 +++ b/testsuite/wanted-results/test17 @@ -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 diff --git a/testsuite/wanted-results/test19 b/testsuite/wanted-results/test19 index 64df1ae7..da414b7b 100644 --- a/testsuite/wanted-results/test19 +++ b/testsuite/wanted-results/test19 @@ -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 diff --git a/testsuite/wanted-results/test21 b/testsuite/wanted-results/test21 index 7514d2b0..e627da8f 100644 --- a/testsuite/wanted-results/test21 +++ b/testsuite/wanted-results/test21 @@ -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 diff --git a/testsuite/wanted-results/test35 b/testsuite/wanted-results/test35 new file mode 100644 index 00000000..a917ee76 --- /dev/null +++ b/testsuite/wanted-results/test35 @@ -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 diff --git a/testsuite/wanted-results/test36 b/testsuite/wanted-results/test36 new file mode 100644 index 00000000..d3acad55 --- /dev/null +++ b/testsuite/wanted-results/test36 @@ -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