![](/img/trans.png)
[英]Copying files containing text, and files within several specifically named subfolders
[英]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.