Bash: для цикла, копирования, резервного копирования - PullRequest
1 голос
/ 17 марта 2010

Эй, не уверен на 100%, что означает эта ошибка.

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

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

Ответы [ 3 ]

7 голосов
/ 17 марта 2010

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

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

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

% cp * ../backup/

7 голосов
/ 17 марта 2010

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

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

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

2 голосов
/ 17 марта 2010

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

cp -b * ../backup 

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

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