2017-05-29 110 views
0

我需要添加前綴C_,然後將文件從tmp位置移動到目標位置。 以下是腳本 我不允許在當前目錄中放置腳本。無法重命名並將文件從一個位置移動到另一個位置

for tmpfile in /home/asmita/tmp 
    do 
    mv "$tmpfile" "C_${tmpfile}" 
    mv "C_${tmpfile}" /home/tgasmita 
done 

當我嘗試移動前綴文件時,我收到錯誤C_/home/asmita/tmp/xyz.txt找不到。因爲整個路徑存儲在tmpfile變量中。

+1

檢查目標文件夾的權限 –

回答

0

更改您的代碼以使用basenamedirname命令獲取文件名和目錄名稱。使用這些來組合這些值並獲得新的路徑。

for tmpfile in /home/asmita/tmp 
do 
    DIRPATH=$(dirname "${tmpfile}") 
    FILENAME=$(basename "${tmpfile}") 
    mv "$tmpfile" "${DIRPATH}C_${FILENAME}" 
    mv "${DIRPATH}C_${FILENAME}" /home/tgasmita 
done 
+0

非常感謝!有效! :-) –

0

有很多方法可以做到這一點。首先讓我修復你的腳本。

1.在下面的代碼中,確保您只傳遞文件名而不是完整路徑。下面的腳本是有效的,如果只知道FILENAME

#!/bin/sh 
for tmpfile in /home/asmita/tmp 
do 
    mv "{tmpfile}/filename.txt" "/home/tgasmita/C_filename.txt" 
done 

2,如果你不知道文件的名稱和要重命名和移動文件.TXT到另一個文件夾,那麼你可能會喜歡下面的腳本。

#!/bin/sh 
lines=`find /home/asmita/tmp -name "*.txt" -printf "%f\n";` 
for i in ${lines[@]} 
do 
    mv "/home/asmita/tmp/${i}" "/home/tgasmita/C_${i}" 
done 

請注意,我正在尋找在源文件夾只有文本文件(/家庭/ asmita/tmp目錄 )您可以根據需要.TXT更改爲其他擴展。如果要移動並重命名源文件夾中的所有文件,則只需從第二行替換「* .txt」「。」「

相關問題