如何爲複製命令創建一個有效的完整文件路徑? 我想構建一個有效的文件路徑,它將通過cp命令將其讀取爲一個路徑,我的丟失文件位於此處,並且將被複制到另一個目錄。問題是cp命令不會將其識別爲路徑。我希望和欣賞,你可以幫助我解決這個問題。如何製作有效的連續完整文件路徑?
*文件和目錄存在。
*完整的文件路徑是通過連接$fname
和$path
構建的。
*我丟失的文件被命名爲12345678.xml
腳本
17 for((i=0;i<${#array[@]}-1;i+=2));do
18 path=$(find "/path/sourcefolder" -name "*zipfolder*" -exec grep -l "Mylostfile" {} +)
19 fname=$(find "/path/sourcefolder" -name "*zipfolder*" -exec unzip -l {} \; | grep "12345678.xml" | awk ' { printf $4 }')
20 fullpath="$path/$fname"
21 cp -t "/path/Desktop" "$fullpath"
22 done
實際輸出
Test_v2.sh: line 20: /path/zipfolder/12345678.xml: No such file or directory cp: cannot stat '': No such file or directory
所需的輸出
文件拷貝到其他目錄
附加註釋1: 我增加了設置-xv的是這樣的結果。
++ find /path/sourcefolder -name '*zipfolder*' -exec grep -l 12345678 '{}' +
+ path=/path/sourcefolder/zipfolder.zip
++ find /path/sourcefolder -name '*zipfolder*' -exec unzip -l '{}' ';'
++ grep 12345678
++ awk ' { printf $4 }'
+ fname=12345678.xml
+ set -xv
+ fullpath=
+ /path/sourcefolder/zipfolder.zip/12345678.xml
Test_v2.sh: line 21: /path/sourcefolder/zipfolder.zip/12345678.xml: No such file or directory
+ cp -t /path/Desktop ''
+ cp: cannot stat '': Not a directory
附加評論#2: fullpath=
和"$path/$fname"
之間的空間的建議被消除,這是以下的結果。
++ find /path/sourcefolder -name '*zipfolder*' -exec grep -l 12345678 '{}' +
+ path=/path/sourcefolder/zipfolder.zip
++ find /path/sourcefolder -name '*zipfolder*' -exec unzip -l '{}' ';'
++ grep 12345678
++ awk ' { printf $4 }'
+ fname=12345678.xml
+ set -xv
+ fullpath=/path/sourcefolder/zipfolder.zip/12345678.xml
+ cp -t /path/Desktop ''
+ cp: cannot stat '/path/sourcefolder/zipfolder.zip/12345678.xml': Not a directory
我不認爲錯誤信息來自您顯示的* cp *行,因爲消息抱怨了一個空參數,但* fullpath *必須通過構造包含至少一個斜槓。另外,你忘了告訴我們哪一行是第20行。我建議用'-x'運行腳本。順便說一句,根據* cp *的手冊頁,正確的語法是'cp -t/path/Desktop「$ fullpath」'。但是,我不認爲這是錯誤的原因。至少我的* cp *對於最終獲得-t也很滿意。 – user1934428
嘗試在提到的行之前放置set -xv並準確查看正在設置和返回的內容。 – grail
@ user1924428更新!我添加了set -xv作爲grail建議和它的結果並且改變了cp語法,如user1924428也建議。在'fullpath ='$ path/$ fname「'中有 –