2014-11-09 2 views
-1

Мне нужно написать сценарий Bash, который будет искать, существует ли файл и переместить файл в конкретный каталог, а затем переименуйте файл с расширением .1 или .2 и т. Д. если .1 уже существует. Я чувствую, что у меня хорошее начало, но он не распознает каталог, хотя я могу напрямую входить в mv-файл и работать. Где я иду не так?Bash Переместить файл и переименовать с добавочным расширением

#!/bin/bash 
DESTINATION="~hbrown31/homework" 
FILE=$1 
if [ -e "$FILE" ] 
then 
    for $FILE in 'ls|sort -g -r' 
    do 
    echo "File is being moved and renamed" 
    NEWFILE="$DESTINATION""$FILE""." 
    mv "$FILE" "$(NEWFILE + 1)" 
    fi 
else 
    echo "File does not exist" 
fi 
+0

Вы, вероятно, нужно окончательное '/' на НАЗНАЧЕНИЯ, или использовать «$ НАЗНАЧЕНИЯ/$ FILE» –

+0

Кроме того, $ НАЗНАЧЕНИЯ $ ФАЙЛ, вероятно, не является целым числом, так что это означает увеличить его? –

+0

Исправить. Мне не хватало окончательного/пути назначения. Когда я перемещаю файл, мне нужно добавить номер .number в конец имени файла. Если .1 уже существует, я должен это сделать .2 – Heather

ответ

0

Это не совсем ясно мне, что вы хотите (я не понимаю «Ls | рода», но я думаю, что вы ищете что-то вроде:

#!/bin/bash 
DEST=~hbrown31/homework # Do not quote or the ~ will not be expanded 

move() { 
    suffix=0 
    file="$DEST/$1" 
    while test -e "$file"; do 
    file="$DEST/$1.$((++suffix))" 
    done 
    mv -v "$1" "$file" 
} 

for x; do move "$x"; done 

Обратите внимание, что некоторые версии из mv сделать варианты поддержки, такие как -b и --backup, что на самом деле может сделать большую часть работы за вас.

+2

': $ ((suffix + = 1))' милый, но '((суффикс + = 1))' или даже '((++ suffix)) 'достаточно';) '. –

+0

@gniourf_gniourf Мне нравится, что используется правильная форма приращения. –

+0

Суффикс + = 1 более выразителен. В нем говорится, что делается, а не полагается на побочный эффект. Использование post-increment было бы подходящим, если бы оно было написано как однострочный: 'file =" $ DEST/$ 1. $ ((++ suffix)) ' –

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