无法重命名文件并将文件从一个位置移动到另一个位置

时间:2017-05-29 10:50:49

标签: shell unix

我需要添加前缀C_,然后将文件从tmp位置移动到目标位置。 这是脚本 我不允许在当前目录中放置脚本。

def find(entity, **kwargs):
    return instance.search(
        set(),
        {'search': '{0}="{1}"'.format(key, kwargs[key]) for key in kwargs}
    )

当我尝试移动前缀文件时,我收到错误C_ / home / asmita / tmp / xyz.txt。因为整个路径存储在tmpfile变量中。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

请注意,我只在源文件夹中查找文本文件( / home / asmita / tmp )您可以根据需要将.txt更改为其他扩展名。如果要移动并重命名源文件夹中的所有文件,只需将“* .txt”替换为“。*”从第二行。