LINUX.ORG.RU

MV и одинаковые файлы


0

1

Есть две папки tmp и tmp1
Перемещаю файлы из tmp в tmp1
cd /tmp
mv * /tmp1
И файлы которые имели одинаковые названия в папке tmp1 заменяются
файлами из tmp
Возможно ли при перемещение сделать так, что бы одинаковые файлы из
tmp не заменяли файлы в tmp1 а копировались в tmp1 и
переименовывались допустим в file.1, file.2....и т.д?


cp -R --backup=numbered tmp/ tmp1/
Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от tits

Проще написать тогда правило для logrotate, положить его куда-нибудь выше tmp1 и запускать

logrotate my_config

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от maloi

правда стоит учесть, что и cp, и rsync, и mv с опцией --backup переименовывают файл из DEST, а не из SRC, а судя по первому сообщению - надо наоборот.

maloi ★★★★★
()
Ответ на: комментарий от tits

Работать будет, но не так как надо :-) Лучше вам самому начать разбиратся в скриптописании:

for f in * ; do
  if [ -f /tmp1/$f ] ; then
    cp $f /tmp1/$f.1 # Только здесь нужен цикл, для file.2....и т.д
  else
    mv $f /tmp1/
  fi
done

mky ★★★★★
()

man mv
--backup[=CONTROL]
make a backup of each existing destination file

invy ★★★★★
()
Ответ на: комментарий от DELIRIUM

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

#!/bin/bash

zen@debian:~/tmp$ ls -1
1 1
2 2
3 3
zen@debian:~/tmp$ for i in `ls`

do

echo $i

done

1
1
2
2
3
3

Punk
()
Ответ на: комментарий от DELIRIUM

Сделай

for i in *
do
  echo "$i"
done

и удивись.

akk ★★★★★
()
Ответ на: комментарий от Punk

да, согласен, не прав, уже сам понял =). можно через find тогда.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от xydo

В общем случае они могут быть на разных файловых системах, причём /tmp может быть на tmpfs (относительно небольшой объём).

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.