Чтобы сгенерировать 25 файлов, которые вы ищете...
$ find /lots/of/files | split -d -l 100000
Это создаст файлы по 100 000 строк в каждом. Есть еще несколько вещей, которые вы можете сделать с помощью split
, так что загляните на справочную страницу. С -d
они будут называться в цифрах, а не в алфавитном порядке -. как в x01
, x02
,...x25
Отсюда вы можете просмотреть файлы и запустить rsync.
for file in x*
do
# Run rsync command using $file as the change list
done
ХТХ
1 )пример раскрашивания текста
# creation of 3 escape sequences
C_1=$(echo -ne "\033[30;47m" ) ;
C_2=$(echo -ne "\033[32;41m" ) ;
C_3=$(echo -ne "\033[37;44m" ) ;
C_N=$(echo -ne "\033[0m" ) ;
#simple example for using it
echo $C_1 Hello in C_1 $C_N normal ;
echo $C_2 Hello in C_2 $C_N normal ;
echo $C_3 Hello in C_3 $C_N normal ;
Объяснение значений здесь :https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit
В вашем случае, поскольку вы ищете простой шаблон, я могу использовать только одну команду sed.
PAT="tot" ;
find./ -iname \*$PAT\* -printf '%P\n' | \
sed "s/^\(.*\/\)\{0,1\}\([^\/]*\)\($PAT\)\([^\/]*\)\$/${C_1}\1${C_2}\2${C_3}\3${C_N}\4/i"
\1 is the full path ending with the last /
\2 is the pattern of the filename before the pattern
\3 is the pattern
\4 is after the pattern
Вы можете сделать это с помощью zsh
встроенных операторов glob. Это имело бы несколько преимуществ:
find
и grep
интерпретировать шаблон по-разному)-printf
, -iname
, --color
не являются -стандартными расширениями ). Может быть, что-то вроде:
#! /bin/zsh -
pattern="(#i)${1?Please specify a pattern}"
set -o extendedglob
typeset -A find_file_color
find_file_color=(
dirname $'\e[0;33;49m'
basename $'\e[1;34;49m'
match $'\e[1;33;44m'
reset $'\e[m'
)
colorize_file() {
local file=${1-$REPLY}
case $file in
(*/*)
REPLY=$find_file_color[dirname]$file:h$find_file_color[reset]/;;
(*)
REPLY=
esac
REPLY+=$find_file_color[basename]${${file:t}//(#m)$~pattern/$find_file_color[match]$MATCH$find_file_color[basename]}$find_file_color[reset]
}
print -rC1 -- **/*$~pattern*(ND.+colorize_file)
Обратите внимание, что он строит и сортирует весь список перед передачей в print
для печати. Таким образом, вы начнете получать некоторый вывод только после того, как все файлы будут найдены. Чтобы распечатать их по мере их нахождения (, но тогда нам пришлось бы отказаться от сортировки ), вместо этого вы могли бы использовать функцию квалификатора glob для печати раскрашенного файла:
#! /bin/zsh -
pattern="(#i)${1?Please specify a pattern}"
set -o extendedglob
typeset -A find_file_color
find_file_color=(
dirname $'\e[0;33;49m'
basename $'\e[1;34;49m'
match $'\e[1;33;44m'
reset $'\e[m'
)
colorize_file() {
local file=${1-$REPLY}
case $file in
(*/*)
REPLY=$find_file_color[dirname]$file:h$find_file_color[reset]/;;
(*)
REPLY=
esac
REPLY+=$find_file_color[basename]${${file:t}//(#m)$~pattern/$find_file_color[match]$MATCH$find_file_color[basename]}$find_file_color[reset]
print -r -- $REPLY
false # don't bother adding the file to the glob expansion
}
: **/*$~pattern*(ND.+colorize_file)