2017-05-29 138 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”“。”“

相关问题