我需要添加前缀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变量中。
答案 0 :(得分:0)
更改代码以使用basename
和dirname
命令获取文件名和目录名。使用它们来组合值并获得新路径。
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”替换为“。*”从第二行。