2015-10-13 2 views
0

Я копирую файлы в своем домашнем каталоге в новый каталог. Когда я пытаюсь переименовать файл в этом новом каталоге, файл в домашнем каталоге изменяется, а файл в новом каталоге сохраняет свое имя. Мой код показан ниже.Как переименовать скопированный файл без переименования оригинала

srcDir=$HOME 
newDir=$1 
mkdir $1 

cp $srcDir/* $newDir 

for file in newDir/*; do 
    filename=$(basename $file) 
    if [[ SOMETHING ]]; then 
     mv $filename newname 
    fi 
done 

Если кто-нибудь может сказать мне, в чем я ошибаюсь, это было бы очень признательно.

+0

Возможно, вам стоит использовать [git] (http://git-scm.com/) для вашего исходного кода ... –

ответ

2

Вы переименовываете файлы в текущем рабочем каталоге, с

mv ./$filename newname 

Вы должны предварять путь:

mv newDir/"$filename" newDir/newname 

Или изменить рабочий каталог:

cd newDir 
for file in * ; do 
    mv "$file" newname 
done 
+0

Спасибо за ваш LP! Что касается предингового решения, какова цель кавычек? –

+0

@ AndréFoote: Без двойных кавычек вы не можете работать с именами файлов, содержащими пробелы и другие специальные символы. – choroba

+0

Еще раз спасибо. Серьезно, большое вам спасибо! –

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