Учитывая эти переменные:
$ a=$'one\ntwo';echo "$a"
one
two
$ b=$'three\nfour';echo "$b"
three
four
Вот некоторые возможные варианты:
$ printf '%s\n%s\n' "$a" "$b" |awk '{print NR,$0}'
$ awk '{print NR,$0}' <(echo "$a") <(echo "$b") #process substitution as per Kusalananda's comment
$ echo "$a" |awk '{print NR,$0}' - <(echo "$b")
$ { echo "$a" && echo "$b";} |awk '{print NR,$0}' #or even { echo "$a";echo "$b";}
$ awk '{print NR,$0}' <(echo "$a";echo "$b")
$ awk '{print NR,$0}' <<<$(echo "$a";echo "$b")
Все приведенные выше примеры приводят к:
1 one
2 two
3 three
4 four
Если переменные заканчиваются новой строкой (т.е. переменные содержат содержимое файлов) следующим образом шаблон:
$ a=$'one\ntwo\n'
$ b=$'three\nfour\n'
Тогда также работает:
$ awk '{print NR,$0}' <<<"$a$b"
1 one
2 two
3 three
4 four
5
Прагматическим решением было бы воспроизвести исходные каталоги с желаемыми преобразованными именами файлов локально, используя жесткие ссылки на исходные файлы, а затем rsync эта копия как есть для файловой системы ntfs.
Например, эта демонстрация скрипта Perl дублирует иерархию / tmp / a /
в / tmp / b /
и кодирует URL (с %
и 2 шестнадцатеричные цифры) нежелательные символы, поэтому файл: b
становится файлом% 3ab
(жесткая ссылка), а каталог % b
становится каталогом % 25b% 3cha% 3e
и так далее:
#!/usr/bin/perl
use strict;
use File::Find;
my $startdir = '/tmp/a';
my $copydir = '/tmp/b';
sub handlefile{
my $name = substr($File::Find::name,1);
my $oldname = $startdir.$name;
$name =~ s/([;, \t+%&<>:\"\\|?*])/sprintf('%%%02x',ord($1))/ge;
$name = $copydir.$name;
printf "from %s to %s\n",$oldname,$name;
if(!-l and -d){ mkdir($name) or die $!; }
else{ link($oldname,$name) or die $!; }
}
chdir($startdir) or die;
find(\&handlefile, '.');
Затем вы можете rsync / tmp / b
на свой NTFS. Это всего лишь демонстрация, и необходимо поработать с юникодом и другими ограничениями ntfs, такими как максимальная длина имени файла. Вы также можете проверить наличие конфликтов строчных / прописных букв и использовать предпочитаемую кодировку (от :
до COLON
и т. Д.). Вы можете сделать второй проход, чтобы исправить отметки времени в каталогах. Если у вас нет миллионов файлов, работа, необходимая для создания этой копии структуры каталогов с жесткими ссылками на файлы, не должна быть такой обременительной.