繁体   English   中英

在文本文件中命名的位置之间来回复制文件

[英]Copying files from and to locations named in text files

我有内容的文本文件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匹配的文件(实际上,它告诉外壳程序查找这些文件,如果要进行nit-pick,则将其名称传递给cp )。 实际上, cp $lineA *.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"

终于工作了:

file1='/home/superjaggu/Desktop/file1.txt'
    file2='/home/superjaggu/Desktop/file2.txt'
    while IFS= read -r lineA && IFS= read -r lineB <&3; 
    do
    #cd $lineA      
    cp ${lineA}/*.txt ${lineB} 2>/dev/null
    #cd -v '/home/superjaggu/Desktop'
    done <$file1 3<$file2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM