Одним из способов было бы сделать следующее:
find ~ -type f -iregex '.*javascript.*\.pdf' -printf %f"*"%h | awk -F* '{ system("ln -s "$2"/"$1" "$2"/js_books/"$1) }'
Запустите команду find и напечатайте имя файла, за которым следует звездочка, а затем путь к каталогу. Запустите это через awk, разделив имя файла и каталог и создав команду ln для выполнения с системной функцией awk.
Имейте в виду, что это открыто для команды inject, а также используйте print для вывода команды на экран перед запуском последней команды в системе.
Я не думаю, что это возможно с split
. Вы можете использоватьawk
:
awk '
BEGIN{
fmt="segment%02d" # 2 digits for suffix, zero padded
start="<test xsi:type=\"update\" locale=\"en_US\">"
end="</test>"
}
$0 == start, $0 == end{
if ($0 == start && ++cnt%2==1){ # for every 2nd start element...
fname=sprintf(fmt, fcnt++) # update output filename
}
print $0 > fname # print line, redirect output to fname
}
' test.xml
Это создает два файла segment00
и segment01
:
$ head segment*
==> segment00 <==
<test xsi:type="update" locale="en_US">
<rval>1</rval>
</test>
<test xsi:type="update" locale="en_US">
<rval>1</rval>
</test>
==> segment01 <==
<test xsi:type="update" locale="en_US">
<rval>1</rval>
</test>