2010-03-16 3 views
1

Эй, не на 100% уверен, что означает эта ошибка.Bash: for loop, copy, backup

% for f in "*" ; do cp $f ../backup/backup$f ; done 
cp: ../backup/backup* not found 

Целью является скопировать все файлы в папку в резервную папку и переименовать файлы в резервную копию.

ответ

5

* не должно быть в кавычках:

for f in * ; do cp $f ../backup/$f ; done 

При использовании цитат это предотвращает оболочку от его, поэтому он ищет файл с именем *, не все файлы в каталоге, который является что ты имел в виду.

7

Вы цитируете неправильные вещи: цитируйте переменные, а не подстановочные знаки!

% for f in *; do cp "$f" "../backup/$f" ; done

Кстати, в этом случае, вы можете просто сделать:

% cp * ../backup/

1

Или может быть это:

cp -b * ../backup 

Если вы хотите, чтобы они были переименованы:

% for f in * ; do cp "$f" "../backup/${f}-backup" ; done 
Смежные вопросы