Bash,在变量中移动文件帮助
我的循环检查文件夹中是否存在现有文件,如果该文件名存在,则会附加文件名ex1、2等。 一旦文件名被重命名并保存在$i中,我尝试将其重新命名,但我得到: mv:无法统计'list1.txt':没有这样的文件或目录 我试过mv{$I}~/txt,mv[$I]~/txt等等……运气不好。有什么想法吗?你说: 一旦文件被重命名并保存在$i中 但这是错误的-该文件目前尚未重命名。 您在变量中操纵了一些文本。在运行命令之前(例如通过使用mv),这不会对文件系统产生任何影响 另外,在您的else语句中,我不清楚为什么要在不存在的文件上运行mv,因为-f测试失败Bash,在变量中移动文件帮助,bash,Bash,我的循环检查文件夹中是否存在现有文件,如果该文件名存在,则会附加文件名ex1、2等。 一旦文件名被重命名并保存在$i中,我尝试将其重新命名,但我得到: mv:无法统计'list1.txt':没有这样的文件或目录 我试过mv{$I}~/txt,mv[$I]~/txt等等……运气不好。有什么想法吗?你说: 一旦文件被重命名并保存在$i中 但这是错误的-该文件目前尚未重命名。 您在变量中操纵了一些文本。在运行命令之前(例如通过使用mv),这不会对文件系统产生任何影响 另外,在您的else语句中,我不清
我这里有一些代码,但再次阅读您的程序后,我不确定您到底想完成什么,确切地说…您正在覆盖此处文件的实际名称:
for i in *.txt
do
#Text files
echo $i
#checking for existing files
if [ -f ~/txt/$i ]
then
j=1
#Stripping .txt from the files
temp=${i%".txt"}
#appending filaname with counter "($j)"
i=$temp\($j\).txt
#move to folder /txt
mv $i ~/txt
else
mv $i ~/txt
fi
done
相反,请为新名称使用新变量。像这样的
i=$temp\($j\).txt
我注意到您使用了j=1,但您从未增加该值。你来这里的目的是什么?我怀疑这个程序在很多方面都做不到你想要的。这正是我想要做的。我运行了我的脚本,动作成功了。非常感谢你,弗雷迪!如果你认为它解决了你的问题,那就接受这个答案吧。但正如jwd在他的评论和回答中指出的那样,代码中可能存在其他潜在问题。
newname=$tmp\($j\).txt
#move to folder /txt
mv $i ~/txt/$newname