2013-08-06 4 views
0

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

  1. Мне нужно сделать резервную копию, если файл уже существует.
  2. Скопируйте новый файл в том же месте

Я перед проблемой в пункте 2. В то время как я пытаюсь получить путь назначения для копирования файлов, я не в состоянии извлечь папку файла. Я попытался использовать различные опции команды find, но не смог его взломать.
Мне нужно обрезать имя файла из полного пути к файлу, чтобы его можно было использовать в команде cp. Я новичок в shell-скриптах. Любые указатели оцениваются.

ответ

2

Вы можете использовать

cp --backup 

-b' --backup [= МЕТОД] * Примечание Параметры резервного копирования ::. Сделайте резервную копию каждого файла, который в противном случае будет перезаписан или удален. В качестве специального случая `cp ' создает резервную копию SOURCE, когда параметры силы и резервного копирования указаны в , а SOURCE и DEST - это то же имя для существующего обычного файла . Одним из полезных применений этой комбинации вариантов этот крошечный Bourne сценарий оболочки:

 #!/bin/sh 
     # Usage: backup FILE... 
     # Create a GNU-style backup of each listed FILE. 
     for i; do 
     cp --backup --force -- "$i" "$i" 
     done 
+0

Спасибо, но когда я использую -b, я получаю ошибку, что «b» не является признанным флагом. –

+0

Установите GNU 'cp' из coreutils –

0

Если вам нужно только имя файла, то почему бы не сделать

basename /root/wkdir/index.txt 

и присвоить его переменной, вернет только имя файла?

+0

mani и dtmilano: Спасибо за ваши ответы. Нашел другой способ сделать это, теперь я использую команду 'dirname' для извлечения каталога файлов. –

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