Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash,在变量中移动文件帮助_Bash - Fatal编程技术网

Bash,在变量中移动文件帮助

Bash,在变量中移动文件帮助,bash,Bash,我的循环检查文件夹中是否存在现有文件,如果该文件名存在,则会附加文件名ex1、2等。 一旦文件名被重命名并保存在$i中,我尝试将其重新命名,但我得到: mv:无法统计'list1.txt':没有这样的文件或目录 我试过mv{$I}~/txt,mv[$I]~/txt等等……运气不好。有什么想法吗?你说: 一旦文件被重命名并保存在$i中 但这是错误的-该文件目前尚未重命名。 您在变量中操纵了一些文本。在运行命令之前(例如通过使用mv),这不会对文件系统产生任何影响 另外,在您的else语句中,我不清

我的循环检查文件夹中是否存在现有文件,如果该文件名存在,则会附加文件名ex1、2等。 一旦文件名被重命名并保存在$i中,我尝试将其重新命名,但我得到: mv:无法统计'list1.txt':没有这样的文件或目录

我试过mv{$I}~/txt,mv[$I]~/txt等等……运气不好。有什么想法吗?

你说:

一旦文件被重命名并保存在$i中

但这是错误的-该文件目前尚未重命名。 您在变量中操纵了一些文本。在运行命令之前(例如通过使用mv),这不会对文件系统产生任何影响

另外,在您的else语句中,我不清楚为什么要在不存在的文件上运行mv,因为-f测试失败


我这里有一些代码,但再次阅读您的程序后,我不确定您到底想完成什么,确切地说…

您正在覆盖此处文件的实际名称:

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