Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
182 views
in Technique[技术] by (71.8m points)

Bash, Move file help in variable

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

My loop checks a folder for an existing file, if that file name exists, the file name is appended (ex (1), (2) etc. Once the file name has been renamed and it is held in $i I try to mv it but I'm getting: mv: cannot stat 'list(1).txt': No such file or directory

I tried mv {$i} ~/txt, mv [$i] ~/txt etc...no luck. Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You are overwriting the actually name of the file here:

  i=$temp($j).txt

Instead, use a new variable for the new name. Something like this.

  newname=$tmp($j).txt
  #move to folder /txt
  mv $i ~/txt/$newname

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...