2016-11-15 3 views
2

Что такое эквивалент Tcl для UNIX «cp -pL»? Не могу найти его в file command описаниеTcl эквивалент для команды UNIX «cp -pL»

+1

Краткий справочник: '-p' для сохранения метаданных,' -L' для последующей симлинками (то есть, не копируя ссылку как ссылку, а скорее на что он указывает) в рекурсивном режиме. –

ответ

2

Для одного файла: a) Получить реальный путь к файлу. b) Скопируйте его. c) Установите атрибуты, время модификации и время доступа.

К сожалению, не было способа установить время изменения (время разработки в Windows).

set fn sourcefn 
set tofn targetfn 
set nfn [file normalize [file readlink $fn]] 
file copy -force $nfn $tofn 
foreach {key} [list attributes mtime atime] { 
    set temp [file $key $nfn] 
    file $key $tofn {*}$temp 
} 

Это чистое решение Tcl, которое будет работать на Unix, Mac OS X и Windows. Конечно, вы можете просто сделать:

exec cp -pLf $from $to 

Ссылки: file

+0

Отличный ответ. Мне особенно нравится, что использование 'exec' в порядке. –