![](/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.