@oleww05

Как выполнить подстановку в bash?

Есть два текстовых файла в которых указан пусть.
Содержимое первого
/test1/file 1.txt
/test1/file 2.txt
/test1/file 3.txt
Содержимое второго
/test2/papka 1
/test2/papka 2
/test2/papka 3

Использую такой скрипт
#!/bin/bash
a=$(cat text01.txt)
b=$(cat text02.txt)
VAR=$(paste -d " " <(echo "$a") <(echo "$b"))
echo "$VAR"

Получается
/test1/file 1.txt /test2/papka 1
/test1/file 2.txt /test2/papka 2
/test1/file 3.txt /test2/papka 3

Как теперь каждую строку подставить в команду перемещения mv?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
У вас точно пробелы в имени файлов есть?
Если нет, то можно так:
paste 1.txt 2.txt|xargs -n2 mv

или так
sed "s/.*/mv /" 1.txt >text03.txt
paste text03.txt text02.txt text01.txt


Если есть, сперва их нужно заэкранировать.
sed -i "s/ /\\\ /g" text01.txt text02.txt
paste 1.txt 2.txt|xargs -n2 mv
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
martin74ua
@martin74ua
Linux administrator
`mv $VAR`

строка вверху в обратных апострофах
Ответ написан
@q27off
a=$(cat text01.txt)
b=$(cat text02.txt)
VAR=$(paste -d "\n" <(echo "$a") <(echo "$b"))

xargs -d "\n" -n 2 mv <<< "$VAR"


while read -r file
do
    files[$((i++))]="$file"
done < text01.txt

while read -r dir
do
    mv "${files[$((j++))]}" "$dir"
done < text02.txt
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы