簡體   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