2013-09-24 2 views
-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: cannot stat 'list(1).txt': No such file or directoryBash, Переместить файл справки переменной

Я попытался mv {$i} ~/txt, mv [$i] ~/txt и т.д. ... не везет Есть идеи

+2

Я заметил, что вы используете 'j = 1', но вы никогда не увеличиваете это значение. Каковы ваши намерения здесь? Я подозреваю, что эта программа не делает то, что вы хотите, в большей степени, чем одна. – jwd

ответ

1

Вы перезаписывание собственно имени файла здесь:

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

Вместо этого используйте новую переменную для нового имени. Что-то вроде этого.

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

То точно, что я пытался сделать. Я запустил свой сценарий, и это сработало. Большое спасибо Фредди! – LostnBash

+0

Идите и принимайте это как ответ, если считаете, что он решил вашу проблему. Но похоже, что в вашем коде могут быть другие потенциальные проблемы, как указал jwd в своем комментарии и его ответе. – Freddie

1

Вы говорите:

После того, как файл был переименован и проводится в $i ...

Но это неверно - файл имеет не был переименован в данный момент. Вы манипулировали некоторым текстом в переменной. Это не влияет на файловую систему, пока вы не запустите команду, например, с помощью mv.

Кроме того, в вашем заявлении else мне непонятно, почему вы используете mv в файле, который не существует (сбой теста -f).

Я имел некоторый код здесь, но от повторного чтения вашей программы, я не знаю точно, что вы пытаетесь достичь, точно ...

Смежные вопросы