我希望我的腳本將addresses.list(其中包含這些文件的絕對路徑)中的文件複製到我的folder3中添加到文件的名稱變量k(它們來自較低文件夾的名稱)。使用cp複製和更改從filelist.file中讀取的文件的名稱
該腳本對我有意義,但它不起作用,它指出:「cp:無法創建常規文件」;有什麼建議麼?
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
cp $f "/folder1/folder2/folder3/${k}_$f"
cd /folder1/
done
done
確切的錯誤我得到的是這樣的「CP:無法創建常規文件`/ A/B/C/d/E /資料夾/文件夾2/folder3 /我的$ k的名稱/ path_to_my_file/myfile.sdf :沒有這樣的文件或目錄「
編輯
這將是確定的,即使我可以複製這些文件只有$ķ但是當我試圖做到這一點我的輸出是最後的文件後,對其進行命名在我的addresses.lst中多次使用我的lowerfolders_list上的每個名稱。 這是我使用的腳本:
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
cp "$f" "/folder1/folder2/folder3/${k}"
done
cd -
done
有什麼建議嗎?
編輯 解決
#!/bin/bash
cd /folder1/
for k in $(cat lowerfolders_list); do
for f in $(cat addresses.lst); do
myfile=$(basename "$f")
cp "$f" "/folder1/folder2/folder3/${k}_${myfile}"
done
cd -
done
感謝所有作出貢獻的人。
在該目錄下是否你的用戶有權限創建文件?另外你爲什麼在循環中使用'cd'? 'cp'不會改變目錄。 – 2014-12-01 16:10:19
我有權這樣做,腳本末尾的cd在一個類似的腳本中爲我工作過一次,所以我將它保留在這個腳本中,但無論如何不應該影響腳本的壞方式......我想。 – alikino 2014-12-01 16:12:55
在該循環中使用「touch」/ folder1/folder2/folder3/$ {k} _ $ f「'而不是'cp'是否正常工作? – 2014-12-01 16:14:24