Вы можете скопировать все содержимое каталога с помощью:
cp -p -r /home/name123/* /local/name123/
-p для сохранения разрешений и -r для рекурсивного копирования папок и всего, что внутри них ()Вам нужны права суперпользователя, чтобы установить новый домашний каталог для пользователя name123:
usermod -d /local/name123 name123
Этот awk генерирует строки переменной -длины.
#! /bin/bash
Str () {
Awk='
function Str (v, n, Local, x) {
x = sprintf ("%*s", n, "");
gsub (/./, v, x);
return (x);
}
{ printf ("%s|%s|%s|\n", Str( "x", 12), Str( "u", 15), Str( "p", 8)); }
'
echo | awk "${Awk}"
}
Str
$./Str
xxxxxxxxxxxx|uuuuuuuuuuuuuuu|pppppppp|
$
Это не особенно эффективно для больших файлов. Он может предварительно -сгенерировать, скажем, массив из 26 строк по 1000 символов в разделе BEGIN, а затем распечатать подразделы этих строк в формате %.*s
, используя требуемую длину и индекс для нужной буквы. Затем он может считывать отдельные входные спецификации для таких строк, как 20 d 16 z 42 q
, чтобы адаптировать каждую строку к вашим требованиям. Подобно этому (проверено на GNU/awk 4.1.4, результаты не показаны):
#! /bin/bash
Str () {
Awk='
BEGIN {
Sep = "|";
split ("abcdefghijklmnopqrstuvwxyz", C, "");
for (j in C) X[C[j]] = Str( C[j], 1000);
}
function Str (v, n, Local, x) {
x = sprintf ("%*s", n, "");
gsub (/./, v, x);
return (x);
}
{
for (f = 1; f < NF; f += 2) {
printf ("%.*s%s", $(f), X[$(1 + f)], Sep);
}
printf ("\n");
}
'
awk "${Awk}"
}
Str <<'EOF'
12 x 15 u 8 z
6 y 12 q
EOF
Не совсем понимаю, при чем здесь Excel. Если вам нужны результаты в Excel, вам нужно будет импортировать их в формате CSV.