gpt4 book ai didi

linux - 从文本文件中指定的位置复制文件或将文件复制到文本文件中指定的位置

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:25 28 4
gpt4 key购买 nike

我有包含内容的文本文件 file1.txt

./home/a/a1/a1.1
./home/a/a1/a1.2
./home/a/a2/a2.1
./home/a/a2/a2.2
./home/a/a3
./home/a/a4
./home/b/b1
./home/b/b2

还有一个文本文件 file2.txt,内容为:

./copy/a/a1/a1.1
./copy/a/a1/a1.2
./copy/a/a2/a2.1
./copy/a/a2/a2.2
./copy/a/a3
./copy/a/a4
./copy/b/b1
./copy/b/b2

我已经创建了脚本来复制所有的文本文件

./home/a/a1/a1.1    to     ./copy/a/a1/a1.1
./home/a/a1/a1.2 to ./copy/a/a1/a1.2
........
....

其他线路也类似。

这是脚本:

file1='/home/superjaggu/Desktop/file1.txt'
file2='/home/superjaggu/Desktop/file2.txt'
while IFS= read -r lineA && IFS= read -r lineB <&3; do
cp *.txt $linA $lineB
done <$file1 3<$file2

但它会将 file1.txt 和 file2.txt 复制到目标目录,而不是从源复制文本文件。

请帮忙。

最佳答案

*.txt 是错误的。它告诉 cp 复制当前工作目录中所有匹配 *.txt 的文件(实际上它告诉 shell 找到这些文件并将它们的名称传递给 cp 如果你想吹毛求疵)。实际上 cp*.txt$lineA 视为输入文件,将 $lineB 视为目标目录。顺便说一句,你在变量名中也有错别字,变量名为 $lineA 而不是 $linA。更正后的脚本将是:

file1='/home/superjaggu/Desktop/file1.txt'
file2='/home/superjaggu/Desktop/file2.txt'
while IFS= read -r lineA && IFS= read -r lineB <&3
do
cp -- "$lineA"/*.txt "$lineB"
done <"$file1" 3<"$file2"

关于linux - 从文本文件中指定的位置复制文件或将文件复制到文本文件中指定的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com