Unittest for --interactive. Added --eta. Updated to version 20100620.

This commit is contained in:
Ole Tange 2010-06-22 15:24:55 +02:00
parent c81a15677d
commit a0f4c5e4d9
34 changed files with 235 additions and 2382 deletions

View file

@ -1,6 +1,6 @@
@%:@! /bin/sh @%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100616. @%:@ Generated by GNU Autoconf 2.65 for parallel 20100620.
@%:@ @%:@
@%:@ Report bugs to <bug-parallel@gnu.org>. @%:@ Report bugs to <bug-parallel@gnu.org>.
@%:@ @%:@
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='parallel' PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel' PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616' PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100616' PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems. \`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";; short | recursive ) echo "Configuration of parallel 20100620:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
parallel configure 20100616 parallel configure 20100620
generated by GNU Autoconf 2.65 generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@ $ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20100616' VERSION='20100620'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by parallel $as_me 20100616, which was This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
parallel config.status 20100616 parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65, configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -1,6 +1,6 @@
@%:@! /bin/sh @%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100616. @%:@ Generated by GNU Autoconf 2.65 for parallel 20100620.
@%:@ @%:@
@%:@ Report bugs to <bug-parallel@gnu.org>. @%:@ Report bugs to <bug-parallel@gnu.org>.
@%:@ @%:@
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='parallel' PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel' PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616' PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100616' PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems. \`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";; short | recursive ) echo "Configuration of parallel 20100620:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
parallel configure 20100616 parallel configure 20100620
generated by GNU Autoconf 2.65 generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@ $ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20100616' VERSION='20100620'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by parallel $as_me 20100616, which was This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
parallel config.status 20100616 parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65, configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
m4trace:configure.ac:1: -1- AC_INIT([parallel], [20100616], [bug-parallel@gnu.org]) m4trace:configure.ac:1: -1- AC_INIT([parallel], [20100620], [bug-parallel@gnu.org])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_]) m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.65 for parallel 20100616. # Generated by GNU Autoconf 2.65 for parallel 20100620.
# #
# Report bugs to <bug-parallel@gnu.org>. # Report bugs to <bug-parallel@gnu.org>.
# #
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='parallel' PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel' PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616' PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100616' PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems. \`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";; short | recursive ) echo "Configuration of parallel 20100620:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
parallel configure 20100616 parallel configure 20100620
generated by GNU Autoconf 2.65 generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@ $ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20100616' VERSION='20100620'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by parallel $as_me 20100616, which was This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
parallel config.status 20100616 parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65, configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20100616], [bug-parallel@gnu.org]) AC_INIT([parallel], [20100620], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([ AC_CONFIG_FILES([

View file

@ -1,6 +1,20 @@
Some systems does not receive the SIGCHLD (maybe when running under # BUG: bash -c 'parallel -a <(seq 1 3) -p echo'
dash?).
Unittest failed if /bin/sh was dash. # Hvordan udregnes system limits på remote systems hvis jeg ikke ved, hvormange
# argumenter, der er? Lav system limits lokalt og lad det være max
# TODO max_line_length on remote
# TODO compute how many can be transferred within max_line_length
# TODO Unittest with filename that is long and requires a lot of quoting. Will there be to many
# TODO --max-number-of-jobs print the system limited number of jobs
# TODO Debian package
# TODO to kill from a run script parallel should set PARALLEL_PID that can be sig termed
# TAGS: parallel | parallel processing | multicore | multiprocessor | Clustering/Distributed Networks
# job control | multiple jobs | parallelization | text processing | cluster | filters
# Clustering Tools | Command Line Tools | Utilities | System Administration
# Bash parallel
* 100% options complete with xargs. All options for xargs can now * 100% options complete with xargs. All options for xargs can now
be used in GNU Parallel - even the more exotic. be used in GNU Parallel - even the more exotic.
@ -14,6 +28,8 @@ Unittest failed if /bin/sh was dash.
server use --progress. It can be turned on even after GNU Parallel server use --progress. It can be turned on even after GNU Parallel
is started. is started.
* --eta shows estimated time left in seconds.
* --halt-on-error stops if an error occurs. GNU Parallel will default * --halt-on-error stops if an error occurs. GNU Parallel will default
to run all jobs - even if some of them fail. With --halt-on-error to run all jobs - even if some of them fail. With --halt-on-error
GNU Parallel can ignore errors, wait for the currently running jobs GNU Parallel can ignore errors, wait for the currently running jobs
@ -44,24 +60,29 @@ rm -rf dirs/*
rm -rf parallel-*bz2 rm -rf parallel-*bz2
xvidcap xvidcap
ffmpeg -i 20100615_002.mp4 -ab 320k -ar 44100 speak.mp3 ffmpeg -i 20100616_002.mp4 -ab 320k -ar 44100 speak.mp3
# Merge video using youtube # Merge video using youtube
#ffmpeg -i speak.mp3 -i xvidcap.mpeg -target mpeg -hq -minrate 8000000 \ #ffmpeg -i speak.mp3 -i xvidcap.mpeg -target mpeg -hq -minrate 8000000 \
#-title "GNU Parallel" -author "Ole Tange" -copyright "(CC-By-SA) 2010" -comment "Intro video of GNU Parallel 20100615" videoaudio.mpg #-title "GNU Parallel" -author "Ole Tange" -copyright "(CC-By-SA) 2010" -comment "Intro video of GNU Parallel 20100616" videoaudio.mpg
# GNU PARALLEL - BASIC USAGE # GNU PARALLEL - BASIC USAGE
# A GNU tool for parallelizing shell commands # A GNU tool for parallelizing shell commands
## Ole Tange Author
# GET GNU PARALLEL # GET GNU PARALLEL
wget ftp://ftp.gnu.org/gnu/parallel/parallel-20100615.tar.bz2 wget ftp://ftp.gnu.org/gnu/parallel/parallel-20100620.tar.bz2
tar xjf parallel-20100615.tar.bz2 tar xjf parallel-20100620.tar.bz2
cd parallel-20100615 cd parallel-20100620
./configure && make ## ./configure && make ##
su su
make install make install
exit exit
cd cd
## scp /usr/local/bin/parallel root@parallel:/usr/local/bin/
# YOUR FIRST PARALLEL JOBS # YOUR FIRST PARALLEL JOBS
cd logs cd logs
du du
@ -76,26 +97,26 @@ ls | time parallel gunzip
# RECOMPRESS gz TO bz2 # RECOMPRESS gz TO bz2
ls | time parallel gzip -1 ls | time parallel gzip -1
ls *.gz | time parallel -j+0 --progress 'zcat {} | bzip2 -1 > {.}.bz2' ls *.gz | time parallel -j+0 --eta 'zcat {} | bzip2 -9 >{.}.bz2'
## Explain command line ## Explain command line
## vis top local ## vis top local
## Man that is boring ## Man that is boring
## 2m41s - 2m ## 2m41s - 2m - 3m35s
# RECOMPRESS gz TO bz2 USING local(:) AND REMOTE server1-3 # RECOMPRESS gz TO bz2 USING local(:) AND REMOTE server1-4
ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server3,: \ ls *.gz |time parallel -j+0 --eta -Sserver1,server2,server3,server4,: \
--transfer --return {.}.bz2 --cleanup 'zcat {} | bzip2 -1 > {.}.bz2' --transfer --return {.}.bz2 --cleanup 'zcat {} | bzip2 -9 > {.}.bz2'
## Explain command line ## Explain command line
## Explain server config ## Explain server config
## vis top local ## vis top local
## vis top remote1-3 ## vis top remote1-3
## 49 sek ## 49 sek
# RECOMPRESS gz TO bz2 USING A SCRIPT ON local AND REMOTE server1-3 # RECOMPRESS gz TO bz2 USING A SCRIPT ON local AND REMOTE server1-2,4
# (imagine the script is way more complex) # (imagine the script is way more complex)
cp ../recompress /tmp cp ../recompress /tmp
cat /tmp/recompress cat /tmp/recompress
ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server3,: \ ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server4,: \
--trc {.}.bz2 --basefile /tmp/recompress '/tmp/recompress {} {.}.bz2' --trc {.}.bz2 --basefile /tmp/recompress '/tmp/recompress {} {.}.bz2'
@ -123,7 +144,7 @@ seq 1 255 | parallel -j0 ping -c 1 178.63.11.{} 2>&1 \
| grep '64 bytes' | wc -l | grep '64 bytes' | wc -l
# MULTIPLE ARGUMENTS # MULTIPLE ARGUMENTS
# make dir: test-(1-20000).dir # make dir: test-(1-5000).dir
cd ../dirs cd ../dirs
rm -rf *; sync rm -rf *; sync
seq 1 10 | parallel echo mkdir test-{}.dir seq 1 10 | parallel echo mkdir test-{}.dir
@ -175,6 +196,12 @@ Test if -0 works on filenames ending in '\n'
If there are nomore jobs (STDIN is eof) then make sure to If there are nomore jobs (STDIN is eof) then make sure to
distribute the arguments evenly if running -X. distribute the arguments evenly if running -X.
=head1 search terms
GNU parallel execution shell bash script simultaneous concurrent linux
scripting run xargs ppss code.google.com/p/ppss/
=head1 options =head1 options
One char options not used: F G J K P Q Y One char options not used: F G J K P Q Y

View file

@ -79,7 +79,7 @@ download at: http://ftp.gnu.org/gnu/parallel/
New in this release: New in this release:
* GNU Parallel now has support for running jobs on remote machines * GNU Parallel now has progress indicator
= About GNU Parallel = = About GNU Parallel =

View file

@ -37,7 +37,7 @@ after the list of options. That will give you an idea of what GNU
B<parallel> is capable of. B<parallel> is capable of.
You can also watch the intro video for a quick introduction: You can also watch the intro video for a quick introduction:
http://www.youtube.com/watch?v=LlXDtd_pRaY http://www.youtube.com/watch?v=OpaiGYxkSuQ
=head1 OPTIONS =head1 OPTIONS
@ -164,6 +164,14 @@ If I<eof-str> is omitted, there is no end of file string. If neither
B<-E> nor B<-e> is used, no end of file string is used. B<-E> nor B<-e> is used, no end of file string is used.
=item B<--eta> (beta testing)
Show the estimated number of seconds before finishing. This forces GNU
B<parallel> to read all jobs before starting to find the number of
jobs. GNU B<parallel> normally only reads the next job to run.
Implies B<--progress>.
=item B<--file> =item B<--file>
=item B<-f> =item B<-f>
@ -1603,7 +1611,7 @@ if($::opt_halt_on_error) {
sub parse_options { sub parse_options {
# Defaults: # Defaults:
$Global::version = 20100616; $Global::version = 20100620;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::debug = 0; $Global::debug = 0;
$Global::verbose = 0; $Global::verbose = 0;
@ -1620,6 +1628,8 @@ sub parse_options {
$Global::default_simultaneous_sshlogins = 9; $Global::default_simultaneous_sshlogins = 9;
$Global::exitstatus = 0; $Global::exitstatus = 0;
$Global::halt_on_error_exitstatus = 0; $Global::halt_on_error_exitstatus = 0;
$Global::total_jobs = 0;
$Global::eta = 0;
Getopt::Long::Configure ("bundling","require_order"); Getopt::Long::Configure ("bundling","require_order");
# Add options from .parallelrc # Add options from .parallelrc
@ -1664,6 +1674,7 @@ sub parse_options {
"basefile|B=s" => \@::opt_basefile, "basefile|B=s" => \@::opt_basefile,
"halt-on-error|H=s" => \$::opt_halt_on_error, "halt-on-error|H=s" => \$::opt_halt_on_error,
"progress" => \$::opt_progress, "progress" => \$::opt_progress,
"eta" => \$::opt_eta,
# xargs-compatibility - implemented, man, unittest # xargs-compatibility - implemented, man, unittest
"max-procs|P=s" => \$::opt_P, "max-procs|P=s" => \$::opt_P,
"delimiter|d=s" => \$::opt_d, "delimiter|d=s" => \$::opt_d,
@ -1677,13 +1688,11 @@ sub parse_options {
"help|h" => \$::opt_help, "help|h" => \$::opt_help,
"L=i" => \$::opt_L, "L=i" => \$::opt_L,
"max-lines|l:i" => \$::opt_l, "max-lines|l:i" => \$::opt_l,
"interactive|p" => \$::opt_p,
"verbose|t" => \$::opt_verbose, "verbose|t" => \$::opt_verbose,
"version|V" => \$::opt_version, "version|V" => \$::opt_version,
"show-limits" => \$::opt_show_limits, "show-limits" => \$::opt_show_limits,
"exit|x" => \$::opt_x, "exit|x" => \$::opt_x,
## xargs-compatibility - implemented, man - unittest missing
"interactive|p" => \$::opt_p,
## How to unittest? tty must be emulated
) || die_usage(); ) || die_usage();
$Global::debug = (defined $::opt_D); $Global::debug = (defined $::opt_D);
$Global::input_is_filename = (@ARGV); $Global::input_is_filename = (@ARGV);
@ -1735,6 +1744,16 @@ sub parse_options {
} }
$Global::argfile = *ARGFILE; $Global::argfile = *ARGFILE;
} }
if(defined $::opt_eta) {
# must be done after opt_a
$::opt_progress = $::opt_eta;
my @args = ();
while(not eof $Global::argfile) {
# This will read all arguments and compute $Global::total_jobs
push @args, get_next_arg();
}
unget_arg(@args);
}
if(@ARGV) { if(@ARGV) {
if($Global::quoting) { if($Global::quoting) {
@ -2507,6 +2526,7 @@ sub get_next_arg {
if($Global::input_is_filename) { if($Global::input_is_filename) {
$arg = shell_quote($arg); $arg = shell_quote($arg);
} }
$Global::total_jobs++;
} }
debug("Next arg: !".$arg."!\n"); debug("Next arg: !".$arg."!\n");
return $arg; return $arg;
@ -2518,7 +2538,9 @@ sub unget_arg {
sub drain_job_queue { sub drain_job_queue {
if($::opt_progress) { if($::opt_progress) {
DoNotReap();
print init_progress(); print init_progress();
ReapIfNeeded();
} }
my $last_header=""; my $last_header="";
while($Global::total_running > 0) { while($Global::total_running > 0) {
@ -2527,11 +2549,13 @@ sub drain_job_queue {
Reaper(); # Some systems fail to catch the SIGCHLD Reaper(); # Some systems fail to catch the SIGCHLD
if($::opt_progress) { if($::opt_progress) {
my %progress = progress(); my %progress = progress();
DoNotReap();
if($last_header ne $progress{'header'}) { if($last_header ne $progress{'header'}) {
print "\n",$progress{'header'},"\n"; print "\n",$progress{'header'},"\n";
$last_header = $progress{'header'}; $last_header = $progress{'header'};
} }
print "\r",$progress{'status'}; print "\r",$progress{'status'};
ReapIfNeeded();
} }
} }
if($::opt_progress) { if($::opt_progress) {
@ -2566,33 +2590,92 @@ sub progress {
($Global::host{$_}{'ncpus'} || "-") ." / ". ($Global::host{$_}{'ncpus'} || "-") ." / ".
$Global::host{$_}{'max_no_of_running'} $Global::host{$_}{'max_no_of_running'}
} @workers); } @workers);
if(eof $Global::argfile) { my $eta = "";
if($::opt_eta) {
my $completed = 0;
for(@workers) { $completed += ($Global::host{$_}{'completed'}||0) }
if($completed) {
$Global::first_completed ||= time;
my $avgtime = (time-$Global::first_completed)/$completed;
my $this_eta = ($Global::total_jobs - $completed) * $avgtime;
$Global::eta ||= $this_eta;
# Smooth the eta so it does not jump wildly
$Global::eta = 0.9 * $Global::eta + 0.1 * $this_eta;
$eta = sprintf("ETA: %ds ", $Global::eta);
}
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX%/XX.Xs sshlogin2:XX/XX/XX%/XX.Xs sshlogin3:XX/XX/XX%/XX.Xs
$header = "Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete";
$status = $eta .
join(" ",map
{
my $completed = ($Global::host{$_}{'completed'}||0);
my $running = $Global::host{$_}{'no_of_running'};
my $time = $completed ? (time-$^T)/($completed) : "0";
sprintf("%s:%d/%d/%d%%/%.1fs ",
$sshlogin{$_}, $running, $completed,
($running+$completed)*100
/ $Global::total_started, $time);
} @workers);
}
if(length $status > $termcols) {
# 1:XX/XX/XX%/XX.Xs 2:XX/XX/XX%/XX.Xs 3:XX/XX/XX%/XX.Xs 4:XX/XX/XX%/XX.Xs
$header = "Computer:jobs running/jobs completed/%of started jobs";
$status = $eta .
join(" ",map
{
my $completed = ($Global::host{$_}{'completed'}||0);
my $running = $Global::host{$_}{'no_of_running'};
my $time = $completed ? (time-$^T)/($completed) : "0";
sprintf("%s:%d/%d/%d%%/%.1fs ",
$workerno{$_}, $running, $completed,
($running+$completed)*100
/ $Global::total_started, $time);
} @workers);
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX/XX% # sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%completed of all jobs"; $header = "Computer:jobs running/jobs completed/%of started jobs";
$status = join(" ",map $status = $eta .
join(" ",map
{ sprintf("%s:%d/%d/%d%%", { sprintf("%s:%d/%d/%d%%",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'}, $sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0), ($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'completed'}||0)*100 ($Global::host{$_}{'no_of_running'}+
/ $Global::total_started) } ($Global::host{$_}{'completed'}||0))*100
@workers);
if(length $status > $termcols) {
# 1:XX/XX/XX% 2:XX/XX/XX% 3:XX/XX/XX% 4:XX/XX/XX% 5:XX/XX/XX% 6:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%completed of all jobs";
$status = join(" ",map
{ sprintf("%s:%d/%d/%d%%",
$workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'completed'}||0)*100
/ $Global::total_started) } / $Global::total_started) }
@workers); @workers);
} }
if(length $status > $termcols) {
# 1:XX/XX/XX% 2:XX/XX/XX% 3:XX/XX/XX% 4:XX/XX/XX% 5:XX/XX/XX% 6:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%of started jobs";
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d/%d%%",
$workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'no_of_running'}+
($Global::host{$_}{'completed'}||0))*100
/ $Global::total_started) }
@workers);
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX sshlogin4:XX/XX
$header = "Computer:jobs running/jobs completed";
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) }
@workers);
} }
if(length $status > $termcols) { if(length $status > $termcols) {
# sshlogin1:XX/XX sshlogin2:XX/XX sshlogin3:XX/XX sshlogin4:XX/XX # sshlogin1:XX/XX sshlogin2:XX/XX sshlogin3:XX/XX sshlogin4:XX/XX
$header = "Computer:jobs running/jobs completed"; $header = "Computer:jobs running/jobs completed";
$status = join(" ",map $status = $eta .
join(" ",map
{ sprintf("%s:%d/%d", { sprintf("%s:%d/%d",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'}, $sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) } ($Global::host{$_}{'completed'}||0)) }
@ -2601,7 +2684,8 @@ sub progress {
if(length $status > $termcols) { if(length $status > $termcols) {
# 1:XX/XX 2:XX/XX 3:XX/XX 4:XX/XX 5:XX/XX 6:XX/XX # 1:XX/XX 2:XX/XX 3:XX/XX 4:XX/XX 5:XX/XX 6:XX/XX
$header = "Computer:jobs running/jobs completed"; $header = "Computer:jobs running/jobs completed";
$status = join(" ",map $status = $eta .
join(" ",map
{ sprintf("%s:%d/%d", { sprintf("%s:%d/%d",
$workerno{$_}, $Global::host{$_}{'no_of_running'}, $workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) } ($Global::host{$_}{'completed'}||0)) }
@ -2610,7 +2694,8 @@ sub progress {
if(length $status > $termcols) { if(length $status > $termcols) {
# sshlogin1:XX sshlogin2:XX sshlogin3:XX sshlogin4:XX sshlogin5:XX # sshlogin1:XX sshlogin2:XX sshlogin3:XX sshlogin4:XX sshlogin5:XX
$header = "Computer:jobs completed"; $header = "Computer:jobs completed";
$status = join(" ",map $status = $eta .
join(" ",map
{ sprintf("%s:%d/%d", { sprintf("%s:%d/%d",
$sshlogin{$_}, $sshlogin{$_},
($Global::host{$_}{'completed'}||0)) } ($Global::host{$_}{'completed'}||0)) }
@ -2619,7 +2704,8 @@ sub progress {
if(length $status > $termcols) { if(length $status > $termcols) {
# 1:XX 2:XX 3:XX 4:XX 5:XX 6:XX # 1:XX 2:XX 3:XX 4:XX 5:XX 6:XX
$header = "Computer:jobs completed"; $header = "Computer:jobs completed";
$status = join(" ",map $status = $eta .
join(" ",map
{ sprintf("%s:%d/%d", { sprintf("%s:%d/%d",
$workerno{$_}, $workerno{$_},
($Global::host{$_}{'completed'}||0)) } ($Global::host{$_}{'completed'}||0)) }
@ -3219,18 +3305,3 @@ $main::opt_show_limits = $main::opt_n = $main::opt_e = $main::opt_verbose =
$main::opt_E = $main::opt_r = $Global::xargs = $Global::keeporder = $main::opt_E = $main::opt_r = $Global::xargs = $Global::keeporder =
$Global::control_path = 0; $Global::control_path = 0;
# Hvordan udregnes system limits på remote systems hvis jeg ikke ved, hvormange
# argumenter, der er? Lav system limits lokalt og lad det være max
# TODO max_line_length on remote
# TODO compute how many can be transferred within max_line_length
# TODO Unittest with filename that is long and requires a lot of quoting. Will there be to many
# TODO --max-number-of-jobs print the system limited number of jobs
# TODO Debian package
# TODO to kill from a run script parallel should set PARALLEL_PID that can be sig termed
# TAGS: parallel | parallel processing | multicore | multiprocessor | Clustering/Distributed Networks
# job control | multiple jobs | parallelization | text processing | cluster | filters
# Clustering Tools | Command Line Tools | Utilities | System Administration
# Bash parallel

View file

@ -1,489 +0,0 @@
test of cat pipe sh
1-col.txt
2-col.txt
bar
bar
foo
foo
foo2
ls 1-col.txt
ls 2-col.txt
ls a
ls b
ls 1-col.txt
ls 2-col.txt
ls a
ls b
1 1 10
1 1 10
1 1 15
1 1 15
4 4 26
6 6 41
1-col.txt
1-col.txt.diff
2-col.txt
2-col.txt.diff
a
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 a|wc;echo a
ls b|wc;echo b
### Check that we can have more input than max procs (-j 0)
touch more_than_5000-9990
touch more_than_5000-9991
touch more_than_5000-9992
touch more_than_5000-9993
touch more_than_5000-9994
touch more_than_5000-9995
touch more_than_5000-9996
touch more_than_5000-9997
touch more_than_5000-9998
touch more_than_5000-9999
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
1 2-col.txt.diff
1 more_than_5000-9901
1 more_than_5000-9902
1 more_than_5000-9903
1 more_than_5000-9904
1 more_than_5000-9905
1 more_than_5000-9906
1 more_than_5000-9907
1 more_than_5000-9908
1 more_than_5000-9909
1 more_than_5000-9910
1 more_than_5000-9911
1 more_than_5000-9912
1 more_than_5000-9913
1 more_than_5000-9914
1 more_than_5000-9915
1 more_than_5000-9916
1 more_than_5000-9917
1 more_than_5000-9918
1 more_than_5000-9919
1 more_than_5000-9920
1 more_than_5000-9921
1 more_than_5000-9922
1 more_than_5000-9923
1 more_than_5000-9924
1 more_than_5000-9925
1 more_than_5000-9926
1 more_than_5000-9927
1 more_than_5000-9928
1 more_than_5000-9929
1 more_than_5000-9930
1 more_than_5000-9931
1 more_than_5000-9932
1 more_than_5000-9933
1 more_than_5000-9934
1 more_than_5000-9935
1 more_than_5000-9936
1 more_than_5000-9937
1 more_than_5000-9938
1 more_than_5000-9939
1 more_than_5000-9940
1 more_than_5000-9941
1 more_than_5000-9942
1 more_than_5000-9943
1 more_than_5000-9944
1 more_than_5000-9945
1 more_than_5000-9946
1 more_than_5000-9947
1 more_than_5000-9948
1 more_than_5000-9949
1 more_than_5000-9950
1 more_than_5000-9951
1 more_than_5000-9952
1 more_than_5000-9953
1 more_than_5000-9954
1 more_than_5000-9955
1 more_than_5000-9956
1 more_than_5000-9957
1 more_than_5000-9958
1 more_than_5000-9959
1 more_than_5000-9960
1 more_than_5000-9961
1 more_than_5000-9962
1 more_than_5000-9963
1 more_than_5000-9964
1 more_than_5000-9965
1 more_than_5000-9966
1 more_than_5000-9967
1 more_than_5000-9968
1 more_than_5000-9969
1 more_than_5000-9970
1 more_than_5000-9971
1 more_than_5000-9972
1 more_than_5000-9973
1 more_than_5000-9974
1 more_than_5000-9975
1 more_than_5000-9976
1 more_than_5000-9977
1 more_than_5000-9978
1 more_than_5000-9979
1 more_than_5000-9980
1 more_than_5000-9981
1 more_than_5000-9982
1 more_than_5000-9983
1 more_than_5000-9984
1 more_than_5000-9985
1 more_than_5000-9986
1 more_than_5000-9987
1 more_than_5000-9988
1 more_than_5000-9989
1 more_than_5000-9990
1 more_than_5000-9991
1 more_than_5000-9992
1 more_than_5000-9993
1 more_than_5000-9994
1 more_than_5000-9995
1 more_than_5000-9996
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
4 b
6 a
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
1 2-col.txt.diff
1 more_than_5000-9901
1 more_than_5000-9902
1 more_than_5000-9903
1 more_than_5000-9904
1 more_than_5000-9905
1 more_than_5000-9906
1 more_than_5000-9907
1 more_than_5000-9908
1 more_than_5000-9909
1 more_than_5000-9910
1 more_than_5000-9911
1 more_than_5000-9912
1 more_than_5000-9913
1 more_than_5000-9914
1 more_than_5000-9915
1 more_than_5000-9916
1 more_than_5000-9917
1 more_than_5000-9918
1 more_than_5000-9919
1 more_than_5000-9920
1 more_than_5000-9921
1 more_than_5000-9922
1 more_than_5000-9923
1 more_than_5000-9924
1 more_than_5000-9925
1 more_than_5000-9926
1 more_than_5000-9927
1 more_than_5000-9928
1 more_than_5000-9929
1 more_than_5000-9930
1 more_than_5000-9931
1 more_than_5000-9932
1 more_than_5000-9933
1 more_than_5000-9934
1 more_than_5000-9935
1 more_than_5000-9936
1 more_than_5000-9937
1 more_than_5000-9938
1 more_than_5000-9939
1 more_than_5000-9940
1 more_than_5000-9941
1 more_than_5000-9942
1 more_than_5000-9943
1 more_than_5000-9944
1 more_than_5000-9945
1 more_than_5000-9946
1 more_than_5000-9947
1 more_than_5000-9948
1 more_than_5000-9949
1 more_than_5000-9950
1 more_than_5000-9951
1 more_than_5000-9952
1 more_than_5000-9953
1 more_than_5000-9954
1 more_than_5000-9955
1 more_than_5000-9956
1 more_than_5000-9957
1 more_than_5000-9958
1 more_than_5000-9959
1 more_than_5000-9960
1 more_than_5000-9961
1 more_than_5000-9962
1 more_than_5000-9963
1 more_than_5000-9964
1 more_than_5000-9965
1 more_than_5000-9966
1 more_than_5000-9967
1 more_than_5000-9968
1 more_than_5000-9969
1 more_than_5000-9970
1 more_than_5000-9971
1 more_than_5000-9972
1 more_than_5000-9973
1 more_than_5000-9974
1 more_than_5000-9975
1 more_than_5000-9976
1 more_than_5000-9977
1 more_than_5000-9978
1 more_than_5000-9979
1 more_than_5000-9980
1 more_than_5000-9981
1 more_than_5000-9982
1 more_than_5000-9983
1 more_than_5000-9984
1 more_than_5000-9985
1 more_than_5000-9986
1 more_than_5000-9987
1 more_than_5000-9988
1 more_than_5000-9989
1 more_than_5000-9990
1 more_than_5000-9991
1 more_than_5000-9992
1 more_than_5000-9993
1 more_than_5000-9994
1 more_than_5000-9995
1 more_than_5000-9996
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
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

View file

@ -1,14 +0,0 @@
### Test filenames containing UTF-8
.
./1-col.txt
./2-col.txt
./a
./a/bar
./a/foo
./a/foo2
./b
./b/bar
./b/foo
./中国 (Zhōngguó)
./中国 (Zhōngguó)/China's (中国) road.jpg
./中国 (Zhōngguó)/thumb_China's (中国) road.jpg

View file

@ -1,50 +0,0 @@
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9

View file

@ -1,8 +0,0 @@
b801e53463bbe25ae078b5fa2652263d -
There are 917 dirs with 916 files
Removing files
982bd9f76f05cdd409ca0e8ceced92c7 -
There are 917 dirs with files
Removing dirs
eb6ee16fe9acc502c3123567cc789cbf -
There are 1 dirs with files

View file

@ -1,8 +0,0 @@
071eca55ffd15717546273235adeb775 -
There are 6246 dirs with 6246 files
Removing files
4e2ffc66811f839854f2f0071c1e0541 -
There are 6246 dirs with files
Removing dirs
1c91bf0327094531133e6ad95d2e23f5 -
There are 1 dirs with files

View file

@ -1,100 +0,0 @@
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9

View file

@ -1,200 +0,0 @@
1
10
100
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30
31
32
33
34
35
36
37
38
39
4
40
41
42
43
44
45
46
47
48
49
5
50
51
52
53
54
55
56
57
58
59
6
60
61
62
63
64
65
66
67
68
69
7
70
71
72
73
74
75
76
77
78
79
8
80
81
82
83
84
85
86
87
88
89
9
90
91
92
93
94
95
96
97
98
99
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 1
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 10
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 100
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 11
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 12
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 13
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 14
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 15
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 16
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 17
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 18
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 19
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 2
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 20
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 21
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 22
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 23
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 24
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 25
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 26
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 27
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 28
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 29
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 3
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 30
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 31
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 32
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 33
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 34
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 35
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 36
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 37
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 38
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 39
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 4
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 40
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 41
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 42
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 43
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 44
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 45
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 46
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 47
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 48
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 49
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 5
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 50
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 51
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 52
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 53
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 54
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 55
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 56
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 57
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 58
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 59
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 6
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 60
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 61
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 62
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 63
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 64
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 65
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 66
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 67
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 68
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 69
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 7
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 70
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 71
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 72
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 73
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 74
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 75
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 76
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 77
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 78
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 79
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 8
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 80
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 81
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 82
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 83
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 84
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 85
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 86
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 87
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 88
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 89
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 9
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 90
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 91
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 92
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 93
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 94
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 95
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 96
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 97
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 98
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 99

View file

@ -1,32 +0,0 @@
b
d
1
10
2
3
4
5
6
7
8
9
1
10
2
3
4
5
6
7
8
9
1
10
2
3
4
5
6
7
8
9

View file

@ -1,3 +0,0 @@
Force outside the file handle limit
Start
end

View file

@ -1,15 +0,0 @@
### This causes problems if we kill child processes
33bf8b2986551515cdaff5e860618098 -
d7fb96d6a56d4347bc24930a395c431a -
### Test of xargs -m and -X
b35d8e49be8d94899b719c40d3f1f4bb -
3 60000 348894
1foo bar2foo bar3 Afoo barBfoo barC
1foo2foo3 1bar2bar3 AfooBfooC AbarBbarC
31d9274be5fdc2de59487cb05ba57776 -
6 119994 697800
31d9274be5fdc2de59487cb05ba57776 -
Chars per line: 116300
### Bug before 2009-08-26 causing regexp compile error or infinite loop
'a'
'a'

View file

@ -1 +0,0 @@
foo

View file

@ -1 +0,0 @@
75da7edc12b129d109af92592c61da56 -

View file

@ -1,52 +0,0 @@
### Test -k
begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
end
### Test SIGTERM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

View file

@ -1,79 +0,0 @@
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
6 1
6 2
6 3
6 4
6 5
6 6
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
a1 b1
a2 b1 b2
a3 b1 b2 b3
a4 b1 b2 b3 b4
a5 b1 b2 b3 b4 b5
a6 b1 b2 b3 b4 b5 b6
a7 b1 b2 b3 b4 b5 b6 b7
a8 b1 b2 b3 b4 b5 b6 b7 b8
a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
a1 b1
a2 b1 2
a3 b1 2 3
a4 b1 2 3 4
a5 b1 2 3 4 5
a6 b1 2 3 4 5 6
a7 b1 2 3 4 5 6 7
a8 b1 2 3 4 5 6 7 8
a9 b1 2 3 4 5 6 7 8 9
a10 b1 2 3 4 5 6 7 8 9 10
31d9274be5fdc2de59487cb05ba57776 -
Chars per line (697800/6): 116300
22074f9acada52462defb18ba912d744 -
Chars per line (817788/7): 116826

View file

@ -1,241 +0,0 @@
### Test -L -l and --max-lines
a_b c
a_b c
a_b
c
a_b
c
a_b c
d
a_b c
d
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
### test too long args
Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
xargs: argument line too long
1 2
3 4
5 6
7 8
Command line too long (1000007 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
9 10
1 2
3 4
5 6
7 8
xargs: argument line too long
9 10
### Test -x
1 2
3 4
5 6
Command line too long (15 >= 10) at number 3: 12345...
7 8
1 2
3 4
5 6
xargs: argument line too long
7 8
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
### Test bugfix if no command given
Command line too long (1000002 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
1 2 3 4 5
### Test -a and --arg-file: Read input from file instead of stdin
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
xargs Expect: 3 1 2
3
1
2
parallel Expect: 3 1 2
3
1
2
xargs Expect: 1 3 2
1
3
2
parallel Expect: 1 3 2
1
3
2
### Test -i and --replace: Replace with argument
replace
replace
replace
replace
replace
replace
replace
replace
replace
### Test -E: Artificial end-of-file
include this
include this
### Test -e and --eof: Artificial end-of-file
include this
include this
include this
include this
### Test -n and --max-args: Max number of args per line (only with -X and -m)
line 1
line 2
line 3
line 1 line 1
line 2
line 1
line 2
line 3
line 1 line 1
line 2
line 1
line 2
line 3
line 1
line 2
line 3
line 1 line 1
line 2
line 1 line 1
line 2
### Test --max-procs and -P: Number of processes
max proc 1
max proc 2
max proc 3
max proc 4
max proc 5
max proc 6
max proc 7
max proc 8
max proc 9
max proc 10
200% proc 1
200% proc 2
200% proc 3
200% proc 4
200% proc 5
200% proc 6
200% proc 7
200% proc 8
200% proc 9
200% proc 10
### Test --delimiter and -d: Delimiter instead of newline
# Yes there is supposed to be an extra newline for -d N
This is line 1
This is line 2
This is line 3
This is line 1
This is line 2
This is line 3
delimiter NUL line 1
line 2
line 3
delimiter TAB line 1
line 2
line 3
### Test --max-chars and -s: Max number of chars in a line
line 1 line 1
line 2
line 1 line 1
line 2
### Test --no-run-if-empty and -r: This should give no output
### Test --help and -h: Help output (just check we get the same amount of lines)
Output from -h and --help
4
4
### Test --version: Version output (just check we get the same amount of lines)
7
### Test --verbose and -t
echo bar
echo car
echo far
echo bar
echo car
echo far
### Test --show-limits
Maximal size of command: 131071
Maximal used size of command: 131071
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar
car
far
Maximal size of command: 131071
Maximal used size of command: 100
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar
car
far

View file

@ -1,204 +0,0 @@
### Test weird regexp chars
a1b1^c1[.}c a2b2^c2[.}c a3b3^c3[.}c a4b4^c4[.}c a5b5^c5[.}c a6b6^c6[.}c
### Test {.} and {}
### Test {.} with files that have no . but dir does
/tmp/test-of-{.}-parallel/subdir/file
/tmp/test-of-{.}-parallel/subdir/file{.}
ls 1-col.diff|wc;echo 1-col.diff
1 1 11
1-col.diff
ls 1-col.txt|wc;echo 1-col.txt
1 1 10
1-col.txt
ls 2-col.diff|wc;echo 2-col.diff
1 1 11
2-col.diff
ls 2-col.txt|wc;echo 2-col.txt
1 1 10
2-col.txt
ls a|wc;echo a
6 6 41
a
ls b|wc;echo b
4 4 26
b
ls 中国\ \(Zhōngguó\)|wc;echo 中国\ \(Zhōngguó\)
4 12 118
中国 (Zhōngguó)
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 中国 (Zhōngguó)
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 中国 (Zhōngguó)
touch -- 1-col/abc-1-col-1-col
touch -- 1-col/abc-1-col-1-col.diff
touch -- 1-col/abc-1-col-1-col.txt
touch -- 2-col/abc-2-col-2-col
touch -- 2-col/abc-2-col-2-col.diff
touch -- 2-col/abc-2-col-2-col.txt
touch -- a/abc-a-a
touch -- b/abc-b-b
touch -- 中国\ \(Zhōngguó\)/abc-中国\ \(Zhōngguó\)-中国\ \(Zhōngguó\)
rm -- 1-col/abc-1-col-1-col
rm -- 1-col/abc-1-col-1-col.diff
rm -- 1-col/abc-1-col-1-col.txt
rm -- 2-col/abc-2-col-2-col
rm -- 2-col/abc-2-col-2-col.diff
rm -- 2-col/abc-2-col-2-col.txt
rm -- a/abc-a-a
rm -- b/abc-b-b
rm -- 中国\ \(Zhōngguó\)/abc-中国\ \(Zhōngguó\)-中国\ \(Zhōngguó\)
### Test -m
1foo bar joe.gif2foo bar joe3 Afoo bar joeBfoo bar joeC
1foo2foo3 1bar2bar3 1joe.gif2joe3 AfooBfooC AbarBbarC AjoeBjoeC
a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6
a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
### Test -m with 60000 args
98c94dcab1efedab3f820935d230bc77 -
12 180011 1286837
### Test -X with 60000 args
12de4813eda45d364a51bef697eee299 -
13 120000 1586682
### Test -X with 60000 args and 5 expansions
19
15
13
10
7
### Test -I with shell meta chars
9
9
9
9
### Test {.}
'a'
'a'
begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
end
### Test -I with -X and -m
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
6 1
6 2
6 3
6 4
6 5
6 6
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
a1 b1
a2 b1 b2
a3 b1 b2 b3
a4 b1 b2 b3 b4
a5 b1 b2 b3 b4 b5
a6 b1 b2 b3 b4 b5 b6
a7 b1 b2 b3 b4 b5 b6 b7
a8 b1 b2 b3 b4 b5 b6 b7 b8
a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
a1 b1
a2 b1 2
a3 b1 2 3
a4 b1 2 3 4
a5 b1 2 3 4 5
a6 b1 2 3 4 5 6
a7 b1 2 3 4 5 6 7
a8 b1 2 3 4 5 6 7 8
a9 b1 2 3 4 5 6 7 8 9
a10 b1 2 3 4 5 6 7 8 9 10
### Test -i
replace
### Test --replace
replace
### Test -t
echo bar
echo car
echo far
### Test --verbose
echo bar
echo car
echo far

View file

@ -1,573 +0,0 @@
### Test --transfer --return --cleanup
# Create some weirdly files in /tmp
### --transfer - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
### --transfer - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer --cleanup - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
### --transfer --cleanup - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
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
/tmp/parallel.file1.out
/tmp/parallel.file10.out
/tmp/parallel.file13.out
/tmp/parallel.file14.out
/tmp/parallel.file15.out
/tmp/parallel.file16.out
/tmp/parallel.file17.out
/tmp/parallel.file18.out
/tmp/parallel.file19.out
/tmp/parallel.file2.out
/tmp/parallel.file20.out
/tmp/parallel.file3.out
/tmp/parallel.file5.out
/tmp/parallel.file6.out
/tmp/parallel.file7.out
/tmp/parallel.file8.out
/tmp/parallel.file9.out
/tmp/parallel.file>fire.out
### --return - relpath
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.out
tmp/parallel.file1.out
tmp/parallel.file10.out
tmp/parallel.file13.out
tmp/parallel.file14.out
tmp/parallel.file15.out
tmp/parallel.file16.out
tmp/parallel.file17.out
tmp/parallel.file18.out
tmp/parallel.file19.out
tmp/parallel.file2.out
tmp/parallel.file20.out
tmp/parallel.file3.out
tmp/parallel.file5.out
tmp/parallel.file6.out
tmp/parallel.file7.out
tmp/parallel.file8.out
tmp/parallel.file9.out
tmp/parallel.file>fire.out
### --return - multiple files
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
### --return --cleanup - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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 - relpath
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
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
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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
### --transfer --return --cleanup - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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
### --transfer --return --cleanup - relpath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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
### --transfer --return --cleanup - multiple files
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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
### --trc - relpath
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
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
### --trc - multiple files
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/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

View file

@ -1,94 +0,0 @@
### Check warning if --transfer but file not found
Warning: /tmp/noexistant/file is not readable and will not be transferred
/tmp/noexistant/file
### Transfer for file starting with :
remote-:.:
content-:
remote-file:name.file:name
content-file:name
remote-file:name.foo.file:name
content-file:name.foo
remote-file: name.foo.file: name
content-file: name.foo
remote-file : name.foo.file : name
content-file : name.foo
### Check warning if --transfer but not --sshlogin
Warning: --transfer ignored as there are no remote --sshlogin
### Check warning if --return but not --sshlogin
Warning: --return ignored as there are no remote --sshlogin
### Check warning if --cleanup but not --sshlog10
### Check forced number of CPUs being respected
alpha
### Check more than 9 simultaneous sshlogins
### Check more than 9(relative) simultaneous sshlogins
### Check -S syntax
1
2
3
4
5
6
7
8
9
10
11
PUs being respected
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
### Check more than 9 simultaneous sshlogins
1
2
3
4
5
6
7
8
9
10
11
### Check more than 9(relative) simultaneous sshlogins
1
2
3
4
5
6
7
8
9
10
11
### Check -S syntax
1
2
3
4
5
6
7
8
9
10
11

View file

@ -1 +0,0 @@
### Test --transfer --return --cleanup - files with newline

View file

@ -1,8 +0,0 @@
### Test --number-of-cpus
1
### Test --number-of-cores
2
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 4 physical CPUs
cores done
CPUs done

View file

@ -1,11 +0,0 @@
### Test $PARALLEL
1
ssh -l parallel parallel-server2 echo\ 1;
1
ssh parallel-server3 echo\ 2;
2
### Test ~/.parallelrc
ssh -l parallel parallel-server2 echo\ 1;
1
ssh parallel-server3 echo\ 2;
2

View file

@ -1,58 +0,0 @@
### Test exit val
0
1
### Test --halt-on-error
1
parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
sleep 2;false
1
parallel: This job failed:
sleep 2;false
1
sh: non_exist: command not found
2
parallel: Starting no more jobs. Waiting for 3 jobs to finish. This job failed:
sleep 2;false
sh: non_exist: command not found
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
sleep 4; non_exist
127
parallel: This job failed:
sleep 2;false
1
### Test last dying print --halt-on-error
0
1
parallel: Starting no more jobs. Waiting for 9 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1
2
parallel: Starting no more jobs. Waiting for 8 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 2
3
parallel: Starting no more jobs. Waiting for 7 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 3
4
parallel: Starting no more jobs. Waiting for 6 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 4
5
parallel: Starting no more jobs. Waiting for 5 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 5
6
parallel: Starting no more jobs. Waiting for 4 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 6
7
parallel: Starting no more jobs. Waiting for 3 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 7
8
0
parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 8
9
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 9
9
0
1
parallel: This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1
1

View file

@ -1,46 +0,0 @@
### Test --basefile with no --sshlogin
Warning: --basefile ignored as there are no remote --sshlogin
### Test --basefile + --cleanup + permissions
script1 run 1
script2 run 1
script1 run 2
script2 run 2
script1 run 3
script2 run 3
script1 run 4
script2 run 4
script1 run 5
script2 run 5
good if no file
ls: cannot access script1: No such file or directory
OK
ls: cannot access script2: No such file or directory
OK
### Test --basefile + --sshlogin :
1
10
11
12
13
2
3
4
5
6
7
8
9
1
10
11
12
13
2
3
4
5
6
7
8
9

View file

@ -4,6 +4,36 @@
PAR=parallel PAR=parallel
echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF
#!/bin/bash
seq 1 3 | parallel -k -p echo opt-p
seq 1 3 | parallel -k --interactive echo opt--interactive
_EOF
chmod 755 /tmp/parallel-script-for-expect
expect -b - <<_EOF
spawn /tmp/parallel-script-for-expect
expect "echo opt-p 1"
send "y\n"
expect "echo opt-p 2"
send "n\n"
expect "echo opt-p 3"
send "y\n"
expect "opt-p 1"
expect "opt-p 3"
expect "echo opt--interactive 1"
send "y\n"
expect "echo opt--interactive 2"
send "n\n"
expect "echo opt--interactive 3"
send "y\n"
expect "opt--interactive 1"
expect "opt--interactive 3"
_EOF
echo '### Test -L -l and --max-lines' echo '### Test -L -l and --max-lines'
(echo a_b;echo c) | parallel -km -L2 echo (echo a_b;echo c) | parallel -km -L2 echo
(echo a_b;echo c) | xargs -L2 echo (echo a_b;echo c) | xargs -L2 echo

View file

@ -1,3 +1,15 @@
### Test -p --interactive
spawn /tmp/parallel-script-for-expect
echo opt-p 1 ?...y
echo opt-p 2 ?...n
echo opt-p 3 ?...y
opt-p 1
opt-p 3
echo opt--interactive 1 ?...y
echo opt--interactive 2 ?...n
echo opt--interactive 3 ?...y
opt--interactive 1
opt--interactive 3
### Test -L -l and --max-lines ### Test -L -l and --max-lines
a_b c a_b c
a_b c a_b c

View file

@ -0,0 +1 @@
### 64-bit wierdness - this did not complete on a 64-bit machine