-1
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

私のループは、既存のファイルのフォルダーをチェックします。そのファイル名が存在する場合、ファイル名が追加されます(例(1)、(2)など)。ファイル名の名前が変更されて保持される$iと、mvしようとしますが、私は得ています: mv: cannot stat 'list(1).txt': No such file or directory

試してみmv {$i} ~/txtましたmv [$i] ~/txt...運が悪い。何か案は?

4

2 に答える 2

1

ここでファイルの実際の名前を上書きしています:

  i=$temp\($j\).txt

代わりに、新しい名前に新しい変数を使用してください。このようなもの。

  newname=$tmp\($j\).txt
  #move to folder /txt
  mv $i ~/txt/$newname
于 2013-09-24T22:29:56.923 に答える